Files
unraid-mcp/skills/unraid/references/quick-reference.md
Jacob Magar 37e9424a5c fix: address 54 MEDIUM/LOW priority PR review issues
Comprehensive fixes across Python code, shell scripts, and documentation
addressing all remaining MEDIUM and LOW priority review comments.

Python Code Fixes (27 fixes):
- tools/info.py: Simplified dispatch with lookup tables, defensive guards,
  CPU fallback formatting, !s conversion flags, module-level sync assertion
- tools/docker.py: Case-insensitive container ID regex, keyword-only confirm,
  module-level ALL_ACTIONS constant
- tools/virtualization.py: Normalized single-VM dict responses, unified
  list/details queries
- core/client.py: Fixed HTTP client singleton race condition, compound key
  substring matching for sensitive data redaction
- subscriptions/: Extracted SSL context creation to shared helper in utils.py,
  replaced deprecated ssl._create_unverified_context API
- tools/array.py: Renamed parity_history to parity_status, hoisted ALL_ACTIONS
- tools/storage.py: Fixed dict(None) risks, temperature 0 falsiness bug
- tools/notifications.py, keys.py, rclone.py: Fixed dict(None) TypeError risks
- tests/: Fixed generator type annotations, added coverage for compound keys

Shell Script Fixes (13 fixes):
- dashboard.sh: Dynamic server discovery, conditional debug output, null-safe
  jq, notification count guard order, removed unused variables
- unraid-query.sh: Proper JSON escaping via jq, --ignore-errors and --insecure
  CLI flags, TLS verification now on by default
- validate-marketplace.sh: Removed unused YELLOW variable, defensive jq,
  simplified repository URL output

Documentation Fixes (24+ fixes):
- Version consistency: Updated all references to v0.2.0 across pyproject.toml,
  plugin.json, marketplace.json, MARKETPLACE.md, __init__.py, README files
- Tool count updates: Changed all "26 tools" references to "10 tools, 90 actions"
- Markdown lint: Fixed MD022, MD031, MD047 issues across multiple files
- Research docs: Fixed auth headers, removed web artifacts, corrected stale info
- Skills docs: Fixed query examples, endpoint counts, env var references

All 227 tests pass, ruff and ty checks clean.
2026-02-15 17:09:31 -05:00

2.7 KiB

Unraid API Quick Reference

Quick reference for the most common Unraid GraphQL API queries.

Setup

# Set environment variables
export UNRAID_URL="https://your-unraid-server/graphql"
export UNRAID_API_KEY="your-api-key-here"

# Or use the helper script directly
./scripts/unraid-query.sh -u "$UNRAID_URL" -k "$UNRAID_API_KEY" -q "{ online }"

Common Queries

System Status

{ 
  online 
  metrics { 
    cpu { percentTotal } 
    memory { total used free percentTotal } 
  } 
}

Array Status

{ 
  array { 
    state 
    parityCheckStatus { status progress errors } 
  } 
}

Disk List with Temperatures

{ 
  array { 
    disks { 
      name 
      device 
      temp 
      status 
      fsSize 
      fsFree 
      isSpinning 
    } 
  } 
}

All Physical Disks (including USB/SSDs)

{ 
  disks { 
    id 
    name 
  } 
}

Network Shares

{ 
  shares { 
    name 
    comment 
  } 
}

Docker Containers

{ 
  docker { 
    containers { 
      id 
      names 
      image 
      state 
      status 
    } 
  } 
}

Virtual Machines

{ 
  vms { 
    id 
    name 
    state 
    cpus 
    memory 
  } 
}

List Log Files

{ 
  logFiles { 
    name 
    size 
    modifiedAt 
  } 
}

Read Log Content

{ 
  logFile(path: "syslog", lines: 20) { 
    content 
    totalLines 
  } 
}

System Info

{ 
  info { 
    time 
    cpu { model cores threads } 
    os { distro release } 
    system { manufacturer model } 
  } 
}

UPS Devices

{ 
  upsDevices { 
    id 
    name 
    status 
    charge 
    load 
  } 
}

Notifications

Counts:

{ 
  notifications { 
    overview { 
      unread { info warning alert total } 
      archive { info warning alert total } 
    } 
  } 
}

List Unread:

{ 
  notifications { 
    list(filter: { type: UNREAD, offset: 0, limit: 10 }) { 
      id 
      subject 
      description 
      timestamp 
    } 
  } 
}

List Archived:

{ 
  notifications { 
    list(filter: { type: ARCHIVE, offset: 0, limit: 10 }) { 
      id 
      subject 
      description 
      timestamp 
    } 
  } 
}

Field Name Notes

  • Use metrics for real-time usage (CPU/memory percentages)
  • Use info for hardware specs (cores, model, etc.)
  • Temperature field is temp (not temperature)
  • Status field is state for array (not status)
  • Sizes are in kilobytes
  • Temperatures are in Celsius

Response Structure

All responses follow this pattern:

{
  "data": {
    "queryName": { ... }
  }
}

Errors appear in:

{
  "errors": [
    { "message": "..." }
  ]
}