Assessment Tool Download

Technical requirements for building the EXE integration

QR Authorize Session Flow — What the EXE Must Do
Internal build notes for the phone-QR handshake. Safe to publish for our own records for now — remove once the EXE is built.

How the session is established (no typing on the PC)

  1. Tech opens /scan on the assessment computer. The page calls createScanSession, which mints a device_session_id and a short session_code (e.g. SCAN-A1B2), and renders a QR of /authorize-scan?session=<device_session_id>.
  2. Tech scans the QR with their phone (already signed into the dashboard), picks the client, and taps Authorize. Server binds the customer/project to that session, flips it to paired, and issues a one-time upload_key.
  3. The /scan page is polling and shows "Authorized for <client>". The EXE now claims the session and uploads (below).

1. EXE reads the session code

The EXE needs the session_code shown on the /scan page. Easiest path: the packaged EXE is launched by the /scan page (custom URL protocol handler or a small downloaded launcher file that carries the code), OR the tech copies/pastes the session_code into the EXE once. This is the only value the EXE ever needs.

2. EXE exchanges the code for the upload key

Only works after the tech has authorized on their phone (status = paired):

POST https://app.msponboard.com/functions/validatePairing
// Request
{ "session_code": "SCAN-A1B2" }

// Response (200) — bound to the exact client the phone authorized
{
  "success": true,
  "upload_key": "…one-time key…",
  "customer_id": "…",
  "project_id": "…"
}

// 403 if not yet authorized / expired — poll every few seconds until 200

The customer_id/project_id are resolved server-side from the session the phone authorized — the EXE never picks the client and can't upload to the wrong one.

3. EXE runs the scan and uploads to THIS session

POST https://app.msponboard.com/functions/completeAssessmentUpload

Header Authorization: Bearer <upload_key>, body { "assessment_data": { … } } (full schema in the section below).

4. Session auto-invalidates on confirm

On a successful upload the server burns the upload_key, sets the session to assessment_uploaded, and stamps expired_at. The /scan page detects this and shows "Upload complete — session closed", so the session on that computer can't be reused. The EXE should discard the key from memory after a 200.

Scan Types & Session Detection — What the EXE Must Do
The EXE detects the active session from the browser and runs the scan types still outstanding for this prospect's assessment.

1. Detect the active session by its session ID

The browser's /scan page holds the livedevice_session_id / session_code. When the EXE launches on this computer it must pick up that same session ID (via the launcher file / URL protocol that opened it, or the pastedsession_code), confirm the session is paired, and bind every scan it runs to that one session so results land on the correct prospect.

2. Run the four scan classes

On launch the EXE presents a menu of the four scan types. The tech can run any of them; results are uploaded per-type and merged into this session's assessment.

Workstation Scan
Hardware inventory, software inventory, security posture and disk space for the machine the EXE is running on. Run on each workstation being assessed.
Network Scan
Discover devices on the local network, IP config, DNS, gateway, subnets, open services. Run once per site/subnet.
WiFi Analysis
Visible SSIDs, channels, signal strength, security types and interference. Run on-site at each location.
External Scan
Public/external IP addresses and externally exposed services/ports for the site's WAN.

3. Auto-check completed scans, offer only the outstanding ones

The EXE is generic — never recompiled per prospect. Right after pairing, it calls the checklist endpoint with the upload_key it just received. The server resolves the prospect and returns which of the four scan types already have data. The EXE then checks & disables the completed ones and pre-checks the outstanding ones. Re-call it after each upload to refresh the boxes live.

POST https://app.msponboard.com/functions/getScanChecklist
// Request  (Authorization: Bearer <upload_key>, or in body)
{ "upload_key": "…the key from validatePairing…" }

// Response (200)
{
  "success": true,
  "scan_completion": { "workstation": true, "network": false, "wifi": false, "external": false },
  "scans": [
    { "key": "workstation", "label": "Workstation Scan", "completed": true },
    { "key": "network",     "label": "Network Scan",     "completed": false },
    { "key": "wifi",        "label": "WiFi Analysis",    "completed": false },
    { "key": "external",    "label": "External Scan",    "completed": false }
  ],
  "outstanding": ["network", "wifi", "external"]
}

completed: true → render checked & disabled.completed: false → render pre-checked so the tech runs it. EachcompleteAssessmentUpload flips its type to complete, so the next call reflects it — across all machines and sites.

PII Exposure Scan (Credit Cards & SSNs) — What the EXE Must Do
Optional, opt-in scan class. Only run this when the client has explicitly agreed to it. Copy these notes into the tool build spec.

1. What to look for

  • Credit card numbers — 13–19 digit sequences that pass a Luhn checksum (reduces false positives) in the common Visa/Mastercard/Amex/Discover prefixes. Ignore whitespace/dashes between groups.
  • US Social Security NumbersXXX-XX-XXXX pattern (and the 9-digit unformatted form), excluding known-invalid ranges (000, 666, 900–999 area; 00 group; 0000 serial).
  • Open and read text-extractable files: .txt .csv .log .rtf .doc/.docx .xls/.xlsx .pdf .json .xml .html. Skip binaries, media, and system/program directories.

2. Upload the results inside assessment_data

Add a pii_scan object to the normalcompleteAssessmentUpload payload. No new endpoint — same session, same upload key.

{
  "assessment_data": {
    // ...other scan sections...
    "pii_scan": {
      "files_scanned": 48213,
      "credit_card_matches": 12,
      "ssn_matches": 5,
      "files_with_findings": [
        { "path": "C:\\Users\\jdoe\\Desktop\\customers.csv", "credit_card_matches": 9, "ssn_matches": 0 },
        { "path": "C:\\Shared\\HR\\employees.xlsx", "credit_card_matches": 0, "ssn_matches": 5 },
        { "path": "C:\\Temp\\export.txt", "credit_card_matches": 3, "ssn_matches": 0 }
      ]
      // NOTE: never include the matched values themselves — counts + paths only
    }
  }
}

files_with_findings may also be a plain array of path strings if you don't want per-file counts. The platform tallies the counts, lists the files, and computes the hard/soft breach-cost exposure automatically.

EXE Integration Requirements
Your assessment tool must implement the following to work with our platform

1. Pairing (Session Code → Upload Key)

The technician generates a short code in the dashboard and types it into the tool. The tool exchanges it for a one-time upload_key via the validate endpoint:

POST https://app.msponboard.com/functions/validatePairing
// Request
{ "session_code": "MSP-A1B2" }

// Response (200)
{
  "success": true,
  "upload_key": "…long random one-time key…",
  "customer_id": "…",
  "project_id": "…"
}

Keep the upload_key in volatile memory only — never write it to disk or registry.

2. Assessment Data Collection

Gather and structure this data during assessment:

hardware_inventory
CPU, RAM, disk info, network adapters
software_inventory
Installed applications, versions, licenses
network_info
IP config, DNS, Gateway, connected networks
security_posture
Antivirus status, Windows Defender, firewall state
disk_space
Total/used/free per volume
custom_data
Any additional findings or observations

3. Upload Endpoint (HTTPS POST)

When assessment completes, POST the data here:

POST https://app.msponboard.com/functions/completeAssessmentUpload

Headers: Authorization: Bearer <upload_key>

Request Body (JSON):

{
  "assessment_data": {
    "hardware_inventory": [...],
    "software_inventory": [...],
    "network_info": {...},
    "security_posture": {...},
    "disk_space": {...},
    "custom_data": {...}
  }
}

The customer_id and project_id are resolved server-side from the upload key — the tool never needs to know them.

4. Authentication

5. Error Handling

Handle these HTTP responses:

200 OK - Upload successful, session closed
401 Unauthorized - Missing or invalid upload_key
403 Forbidden - Code invalid or expired (validate step)
500 Server Error - Retry with exponential backoff

6. Security Checklist

Always use HTTPS for upload (never HTTP)
Validate server SSL certificate (prevent MITM attacks)
Pairing tokens are single-use and expire after upload validation
Don't log or expose pairing_id in user-visible output
Sanitize all collected data before upload (no PII without consent)

7. Example Assessment Data Payload

// Sent with header: Authorization: Bearer <upload_key>
{
  "assessment_data": {
    "hardware_inventory": [
      {"component": "CPU", "details": "Intel Core i7-9700K"},
      {"component": "RAM", "details": "32GB DDR4"}
    ],
    "software_inventory": [
      {"name": "Microsoft Office 365", "version": "2024"},
      {"name": "Google Chrome", "version": "120.0.0.0"}
    ],
    "network_info": {
      "ip_address": "192.168.1.100",
      "gateway": "192.168.1.1",
      "dns": ["8.8.8.8", "8.8.4.4"]
    },
    "security_posture": {
      "antivirus": "Windows Defender (active)",
      "firewall": "enabled"
    },
    "disk_space": {
      "C": {"total_gb": 500, "used_gb": 250, "free_gb": 250}
    },
    "external_ip_addresses": [
      {"ip_address": "203.0.113.45", "ip_type": "ipv4", "description": "Primary WAN"},
      {"ip_address": "203.0.113.46", "ip_type": "ipv4", "description": "Backup WAN"}
    ],
    "custom_data": {
      "notes": "System running smoothly, no issues detected"
    }
  }
}
Ready to Download
Download the portable scanner and run it on the computer you're assessing. It's signed and requires no installation — just run it and scan the QR code it shows with your phone to authorize the scan.
  1. Download and run MSPOnboard.Scanner.exe on the target computer.
  2. Scan the QR code it displays with your phone (signed into the dashboard).
  3. Pick the client and scan types, tap Authorize — the scan runs and uploads automatically.
Download Scanner (.exe)

Questions? Contact your MSP administrator for support.