Prismhr Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Prismhr Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The open-source Model Context Protocol (MCP) server for PrismHR. Connect Claude, Cursor, or any MCP-compatible AI agent directly to your PrismHR PEO platform. Automate payroll, benefits enrollment, compliance reporting, AR/billing, carrier EDI files, and Microsoft 365 actions — with verified-schema tools, scope-gated consent, and zero custom integration code.
Built for PEOs, brokers, and payroll operators who want AI agents that actually work against PrismHR — not another brittle script farm.
Maintained by Simploy. MIT-licensed, PyPI-distributed, plugin-friendly. The fundamental layer for PrismHR × agentic AI.
mcp-name: io.github.nikulk2992-jpg/prismhr-mcp
Keywords: PrismHR API, PrismHR integration, MCP server, Model Context Protocol, PEO automation, payroll automation, AI for HR, Claude for PrismHR, agentic AI, benefits enrollment automation, 834 EDI, 401(k) file automation, HRIS AI agent, PEO software integration.
Every PEO running PrismHR ends up with the same Frankenstein stack: Python scripts, Postman collections, Playwright automations, one-off Node apps. Each one re-implements login, session keepalive, retry logic, pagination, and PrismHR's quirks (camelCase schemas, 500 "No data found" gotchas, batch-of-20 caps, silent 401s).
prismhr-mcp centralizes all of that once, as a production-grade MCP server. The AI agent orchestrates; the server owns auth, caching, retries, normalization, and PEO domain logic. Any PEO drops it in and gets a productive AI experience against their own PrismHR tenant — no glue code, no guesswork, no hallucinated endpoints.
Who this is for:
directly into their ops stack
Production-ready core. Live on PyPI and the MCP Registry.
scrypt-encrypted disk credential cache, PrismHR session with proactive keepalive (no mid-workflow 401s), automatic refresh on failure, concurrency cap, retry with jittered backoff, 500→empty quirk handling, pagination, batching.
no guessed endpoints, no invented fields. 102 response shapes verified and rising.
services. meta_call lets the agent invoke any verified method safely.
consent store with prerequisite expansion and cascade revoke. Default posture = deny all. Tools enforce scope at call time.
PRISMHR_MCP_ALLOW_PROD=true required topoint at prod PrismHR. Prevents accidental first-run blast radius.
See .planning/architecture.md for the full roadmap and .planning/assistants-roadmap.md for the paid tier details.
Once wired into your PrismHR tenant, an AI agent (Claude, ChatGPT, Cursor) can run any of these workflows against live data — read-only by default, write actions opt-in and scoped.
SSN, address, E-Verify clearance, required deductions, garnishment setup. Flags problems before first paycheck.
batch; catches stale INIT, stuck approvals, pay-date-past without post, negative net, missing vouchers.
check issued, deductions stopped, benefits ended, COBRA record created, PTO paid out, ACH retired.
codes, excessive amounts, duplicates within a window, repeat-monthly patterns.
itself flags as the #1 cause of 1094-C/1095-C penalty exposure.
1095-C form; flags code 1H posted while employee was enrolled, safe-harbor conflicts, status-type-change-driven code drift, waiting-period miscoding, ICHRA codes used for pre-2020 years.
threshold, or nearing it in the next 30/60/90 days.
countdown, election-deadline warnings.
payments, overdue remittances, multi-garnishment priority checks.
correct format, federal withholding configured, YTD sanity.
voucher history; finds silent drift before W-2 season.
quarter; wages, FIT, Social Security, Medicare, Additional Medicare.
deducted-but-not-enrolled mismatches; the silent premium leaks.
controller tie-out.
402(g) limit watch, catch-up eligibility for 50+.
who hit deferral limit early and lost proportional match.
with over-limit, approaching-limit, and projected-overage findings.
deemed-distribution exposure.
state using current wages × rate × experience modifier.
accrual, missing class assignment.
next 30/60/90 days.
score for new PEO clients.
companion-guide configs. Guardian model live; BCBS Michigan, Sun Life EDX, Voya PDI, Empower PDI on the pilot roadmap.
shipping, electronic delivery with consent check, SharePoint archive — all composable.
Every workflow returns structured findings with severity and remediation hints, so an AI agent can chain them into higher-order reports (month-end close pack, year-end filing pack, new-client go-live pack, etc.).
Tiering: the OSS core is free. The workflows above ship in the paid prismhr-mcp-simploy tier — source-available, per-PEO license. Contact [email protected].
prismhr-mcp ships in three tiers. Core is free forever. Paid tiers layer commercial PEO intelligence on top.
prismhr-mcp (this repo, MIT, free)The foundation. What's in the box:
meta_callmeta_find, meta_describe, meta_capabilitiesUse this if you want to run Claude against your PrismHR tenant today with zero custom code.
prismhr-mcp-simploy (paid, source-available) — in active buildNamed AI Assistants that ship PEO workflows end-to-end. Built on the OSS core. Licensed per-PEO.
Shipping now:
companion-guide configs. Guardian model prototype live (8 tests green). BCBS Michigan, Sun Life EDX, Voya PDI, Empower PDI on deck for Phase 1 pilot. SFTP delivery + delta tracking next.
tape-spec fixed-width formats.
On the roadmap:
conflict detection, overtime anomaly flags, superbatch reconciliation
eligibility, ACA status, carrier sync verification
state tax setup, I-9 audits, workers' comp codes
summaries, employer tax liability
template registry (white-label ready)
Teams posts, Outlook events/tasks
prismhr-mcp-broker (paid, hosted) — plannedMulti-tenant hosted MCP endpoint so carriers, ERPs, and EDI providers can reach any PrismHR PEO through a single integration. One endpoint, many tenants, centralized compliance. Deferred until Tier 2 ships with a second PEO.
Interested in Tier 2 or Tier 3? Contact [email protected].
Only UAT is supported without an explicit opt-in right now. Prod is guarded behind PRISMHR_MCP_ALLOW_PROD=true.cd C:\path\to\prismhr-mcp # or wherever you cloned
uv sync --extra devCopy .env.example → .env (or set env vars). Pick ONE path:
Path A — 1Password CLI (recommended):
$env:PRISMHR_MCP_ONEPASSWORD_VAULT = "YourVault"
$env:PRISMHR_MCP_ONEPASSWORD_ITEM_PRISMHR = "PrismHR UAT"Requires op CLI signed in (op signin). The item must expose fields labeled username and password (optionally peoId).
Path B — direct env vars (fast, CI-friendly):
$env:PRISMHR_MCP_USERNAME = "<your-api-username>"
$env:PRISMHR_MCP_PASSWORD = "<paste>"
$env:PRISMHR_MCP_PEO_ID = "<your-peo-id>"uv run python -c "from prismhr_mcp.server import build; b = build(); import asyncio; print([t.name for t in asyncio.run(b.server.list_tools())])"Expect 9 tools.
Add to your Claude Code .mcp.json:
{
"mcpServers": {
"prismhr-mcp": {
"command": "uv",
"args": ["run", "--directory", "C:\\path\\to\\prismhr-mcp", "prismhr-mcp"],
"env": {
"PRISMHR_MCP_ENVIRONMENT": "uat",
"PRISMHR_MCP_USERNAME": "<your-api-username>",
"PRISMHR_MCP_PASSWORD": "<paste or reference>",
"PRISMHR_MCP_PEO_ID": "<your-peo-id>"
}
}
}
}Restart Claude Code. /mcp should show prismhr-mcp connected with 9 tools.
You: Tell me about the prismhr-mcp server.
Claude: [calls meta_about] → explains what's available + commercial options.
You: What permissions does it want?
Claude: [calls meta_request_permissions] → shows 14 scopes grouped by category.
You: Grant everything recommended (reads only, no writes).
Claude: [calls meta_grant_permissions(accept_recommended_defaults=true)]
You: List all clients in UAT.
Claude: [calls client_list] → returns the full client roster.uv run pytest -q # expect 60 passing┌──────────────────────────────────────────────────────────────┐
│ Claude / Cowork / any MCP client │
└──────────────────┬───────────────────────────────────────────┘
│ stdio (MCP JSON-RPC)
┌──────────────────▼───────────────────────────────────────────┐
│ prismhr-mcp server (FastMCP) │
│ ├── Permissions (deny-default, scope-gated tools) │
│ ├── Tool groups: meta • client • payroll • benefits │
│ │ compliance • billing • report • m365 │
│ ├── Runtime: PrismHR client, Graph client, SQLite cache │
│ └── Auth: 1Password → scrypt-AES cache → session / MSAL │
└────┬─────────────────────────────────────────────────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────────┐
│ PrismHR REST │ │ Microsoft Graph │
│ (UAT / Prod) │ │ (Outlook / Teams /│
└──────────────┘ │ SharePoint) │
└──────────────────┘Key design commitments:
server.build() only;duplicate names or unknown group prefixes fail at boot (not silently at import).
meta_grant_permissions toenable tool access. Prerequisites auto-expand, revokes cascade.
httpx.AsyncClient + asyncio.Semaphore(5) + async tools.[] on list endpoints,500 "No data found" → empty, 10-consecutive-500s → force refresh.
validation_alias=AliasChoices(...) soPrismHR's camelCase payloads map to snake_case outputs without leaking camelCase into the MCP tool contract.
The OSS core stays free forever. Two paid offerings from Simploy layer on top:
Turnkey deployment of prismhr-mcp for your PEO brand:
Best for PEOs with 50–5,000 clients who want Claude-first operations without the in-house build. Contact: [email protected]
SLA-backed support for teams already running the OSS server:
Best for regulated industries or mid/large PEOs with procurement requirements. Contact: [email protected]
Claude can surface both via meta_about — ask "what commercial options exist for prismhr-mcp?" and it will describe them.
`No PrismHR credentials configured` — set either the 1Password item env vars or the direct PRISMHR_MCP_USERNAME/_PASSWORD pair.
`PrismHR login rejected (status=401)` — wrong username/password/peo_id. The peo_id is tenant-specific; ask your PrismHR admin. Prod and UAT have different values.
`environment=prod requires PRISMHR_MCP_ALLOW_PROD=true` — safety gate. Set PRISMHR_MCP_ALLOW_PROD=true explicitly once you're ready.
`PERMISSION_NOT_GRANTED` — tool was called without its scope. Ask Claude to run meta_request_permissions → then meta_grant_permissions with the scope you want.
Server exits immediately when Claude Code starts it — nearly always a missing env var. Use the step-3 sanity check to isolate.
MIT — see LICENSE. Contributions welcome; see the planning docs under .planning/ for the roadmap.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.