reincarnation.psychometric-feed
GETPer-galaxy psychometric statistics feed (Cronbach alpha, IRT, virtues).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/psychometric-feed"
API quickstart
Every is callable over plain HTTP and over the Model Context Protocol gateway. 88 read endpoints are public; 153 write endpoints are service-key gated. AI agents call the same tools over . The list below is registry-driven — when a spoke ships a new contract, it shows up here automatically.
Dev Console
The Dev Console wraps every endpoint below in a form + live call inspector. Same transports, same auth model, zero setup.
/api/spokes/reincarnation/psychometric-feedPublic read — no auth needed.
GET /api/spokes/reincarnation/psychometric-feed?galaxyId=cams-v1{
"galaxyId": "cams-v1",
"constructs": [
{
"id": "engagement-core",
"cronbachAlpha": 0.89,
"itemCount": 16
},
{
"id": "manager-trust",
"cronbachAlpha": 0.84,
"itemCount": 12
},
{
"id": "role-clarity",
"cronbachAlpha": 0.91,
"itemCount": 20
}
],
"checkedAt": "2026-05-24T09:42:18.304Z"
}Representative API Explorer view — the live console at /console issues real calls.
Public read endpoints
Every GET on the toolbox is publicly reachable in production (PAT-11). Every snippet below is a runnable command — paste it into a terminal and you'll get JSON back. Discovery endpoints (/api/registry, /api/health) and per-spoke reads return real data from the running system. Use them to confirm the toolbox is live before integrating.
reincarnation.psychometric-feed
GETPer-galaxy psychometric statistics feed (Cronbach alpha, IRT, virtues).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/psychometric-feed"
performance-calibration.health
GETPer-spoke Postgres reachability shim on `performance_calibration` (heartbeat table probe against shared Supabase).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/performance-calibration/health"
performance-calibration.cycles.summary
GETSide-by-side cycle stats: bumped up/down/unchanged + percentages (pct unchanged ≡ calibration-room accuracy among complete parses) plus per-leader aggregates at elt/l3/l4/l5 layers.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/performance-calibration/summary"
performance-calibration.employees.trajectory
GETDedup latest row per calibration cycle then return the trailing N cycles for one employee (`lastNCycles`, default 6) with deltas + attribution to elt/l3 leaders captured at ingest time.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/performance-calibration/trajectory"
performance-validity.health
GETPostgres heartbeat on `performance_validity` proving the diagnostics spoke DDL is reachable in the shared project.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/health"
preference-modeler.surveys.get
GETFetch the full survey package by ID.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/surveys/:id"
preference-modeler.surveys.preferences
GETAggregated preference weights, anonymity-gated by minimumResponseThreshold. Optional ?bySegment=true adds bySegment[] (per-segment weights + anonymity); cohorts below threshold omitted.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/surveys/:id/preferences"
program-evaluation.health
GETPer-spoke heartbeat shim for Postgres reachability on `program_evaluation`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/health"
program-evaluation.experiments.get
GETPublic read of experiment detail (arms + optional pre-registration). Returns 409 when stored pre-registration digest fails verification.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/experiments/:id"
talent-value.health
GETPer-spoke heartbeat shim for Postgres reachability on `talent_value`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/talent-value/health"
talent-value.elv.compute
GETELV (Employee Lifetime Value) per segment from HCROI × avg annual cost × tenure-at-exit, inputs exposed as a drill-down + optional seeded-MC uncertainty. Relative/prioritization, not GAAP. Falls back to seeded examples when the tenant has no stored inputs.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/talent-value/elv"
talent-value.nav.compute
GETNA% (share activated), NAV (NA% × ELV), and Opportunity (ELV − NAV) per segment, sorted by Opportunity descending with portfolio totals. NA% denominator headcount (canonical) or survey-response (labeled). The capital-allocation prioritization signal.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/talent-value/nav"
leadership-quality.health
GETPer-spoke heartbeat shim for Postgres reachability on `leadership_quality`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/leadership-quality/health"
leadership-quality.score.read
GETLeadership Quality (0–100, decomposable) per stored subject — composite over performance-program / activation-CAMS / comp-stewardship component sub-indexes, each independently retrievable. Falls back to seeded examples.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/leadership-quality/score"
survey-orchestrator.health
GETPer-spoke heartbeat shim for Postgres reachability on `survey_orchestrator`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/health"
survey-orchestrator.programs.list
GETPublic read of a tenant's survey program catalog.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/programs"
survey-orchestrator.journey.read
GETPublic per-respondent longitudinal journey across a program's waves (14d→90d→quarterly→yearly), ordered, with response pointers.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/journey"
survey-orchestrator.programs.trend
GETPublic per-wave participation/response trend for a program — a cohort aggregate, min-N suppressed (privacy floor).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/trend"
survey-orchestrator.attrition.analyze
GETPublic from-to attrition analysis: talent-competitor map (win-from / lose-to + why), regretted + avoidable rates, movement drivers — segment-aligned, min-N suppressed (PAT-183).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/attrition/analysis"
data-anonymizer.pii-rules
GETList active PII detection rules (header + content patterns).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/pii-rules"
data-anonymizer.strategies
GETList supported anonymization strategies for discovery (name, category, description).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/strategies"
segmentation-studio.canonical-fields
GETActive canonical HRIS field definitions: global catalog, or merged with tenant-specific rows (tenant wins at the same key) when ?tenantId= is set.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-fields"
segmentation-studio.packs-latest
GETFetch the most recently published segmentation pack (published_at DESC).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/packs/latest"
segmentation-studio.packs-version
GETFetch a historical segmentation pack by its immutable version string.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/packs/:version"
segmentation-studio.canonical-segments.list
GETCanonical Segments Catalog (Catalog 2; PAT-41 / PAT-61): list canonical segment definitions. Optional `dimension`, `category`, and non-negative integer `depth` (roots = 0) query params.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-segments"
segmentation-studio.canonical-segments.lookup
GETCanonical Segments Catalog (Catalog 2; PAT-41): fetch one canonical segment by its stable composite id ("segment.<dimension>.<slug>").
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-segments/:id"
segmentation-studio.canonical-segments.resolve
GETCanonical Segments Catalog (Catalog 2; PAT-41): evaluate a canonical segment's predicate (eq / in / gte / lt / between + and / or / not) against the optionally tenant-scoped employee universe and return matched member ids + counts.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-segments/:id/resolve"
segmentation-studio.canonical-segments.ancestors
GETPAT-61 — Ordered ancestor chain (root-first) for a canonical segment id; 404 when missing.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-segments/:id/ancestors"
segmentation-studio.canonical-segments.descendants
GETPAT-61 — Breadth-first descendant subtree with optional `maxDepth` query param (default 10, cap 50).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/canonical-segments/:id/descendants"
segmentation-studio.org.reporting-chain.resolve
GETOrg reporting-chain resolver (PAT-53): walks the manager-employee graph downstream from a focal person and returns everyone reporting up to them, with optional depth cap + tenant scoping. Reads `segmentation_studio.employee_directory`; returns empty arrays when the directory is unseeded.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/org/reporting-chain/resolve"
segmentation-studio.custom-segments.list
GETTenant custom segments (PAT-58): list the latest version of every distinct (tenantId, name) for a tenant. Requires `?tenantId=` query param.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/custom-segments"
segmentation-studio.custom-segments.get
GETTenant custom segments (PAT-58): fetch a single segment by id plus the full version history for its (tenantId, name) pair.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/custom-segments/:id"
segmentation-studio.workforce-datasets.get
GETWorkforce dataset status + summaries.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id"
segmentation-studio.workforce-datasets.rows
GETPaged normalized rows including normalized._segments canonical segment ids.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/rows"
segmentation-studio.workforce-datasets.profile-card
GETSource profile card for wizard PROFILE step.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/profile-card"
segmentation-studio.schemas.list
GETPAT-122: Paginated SegmentationSchemaVersion discovery with optional tenant + purpose filtering + opaque cursor paging.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas"
segmentation-studio.schemas.getByVersionId
GETPAT-137: Fetch SegmentationSchemaVersion by immutable `schemaVersionId` row id (paired with PAT-122 composite GET for schema authoring UX).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas/version/:schemaVersionId"
segmentation-studio.schemas.get
GETPAT-122: Fetch a single SegmentationSchemaVersion by `{schemaId, version}` semantic key.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas/:schemaId/:version"
segmentation-studio.declarative-segmentation.rules.get
GETPAT-160: Loads per-tenant declarative segmentation rules (Config_Segmentation workbook parity — ordered rules, first match wins).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/declarative-segmentation/rules"
calculus.regression-surrogate.get
GETReads a persisted surrogate snapshot (requires tenantId query parameter for scoping).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/regression-surrogate/:modelId"
calculus.metric-keys.unknown
GETPAT-40 diagnostic: recent envelope metricKeys that failed metrics-catalog soft-validation. In-process buffer; lost on cold start.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/metric-keys/unknown"
factor-models.health
GETPer-spoke heartbeat for Postgres `factor_models` reachability.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/health"
factor-models.models.get
GETFetch the model row including optional currentVersionId pointer.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/models/:id"
forecasting.decision-models.get
GETFetch a stored decision tree by id.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/decision-models/:id"
forecasting.measurement-catalog
GETPA Instrument — Catalog of available measurement methods and ranges.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/measurement-catalog"
workforce-planning.health
GETPer-spoke aggregate heartbeat shim for Postgres reachability.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/health"
workforce-planning.positions.list
GETList canonical toolbox positions keyed by `(tenant × source × source row id)` plus Greenhouse-aligned status filters.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/positions"
workforce-planning.forecast.snapshots.list
GETRead immutable forecast_snapshots sorted newest-first (`TrailingAverageForecaster` v1; window = 30d|60d|90d JSON field).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/forecast/snapshots"
workforce-planning.reconciliation.snapshots.list
GETHistorical cross-system deltas (HR filled vs ATS open vs finance budgeted HC JSON per PAT-D1 scout).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/reconciliation/snapshots"
workforce-planning.matches.get
GETRead ranked candidates + tenant prior snapshot for one ATS requisition key.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/:requisitionId"
anycomp.models.get
GETFetch a comp model with all bands.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/models/:id"
anycomp.engagements.get
GETReload a persisted engagement (strategy + its scenarios/impacts) by strategyId, tenant-scoped.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engagements/:strategyId"
metrics-catalog.list
GETList canonical HR metric definitions (6 categories, 102 metrics). Optional ?categoryId=&limit=&offset= for filtering / pagination.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/metrics-catalog/metrics"
metrics-catalog.lookup
GETFetch a single MetricDefinition by stable composite id 'hr-metric.<category-slug>.<metric-slug>'.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/metrics-catalog/metrics/:id"
metrics-catalog.search
GETCase-insensitive substring search across name / description / slug. Optional ?categoryId=&limit= (default 20, max 100).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/metrics-catalog/metrics/search"
metrics-catalog.list-categories
GETList the 6 catalog categories (workforce-composition, compensation-benefits, talent-acquisition, performance-development, engagement-retention, workforce-planning).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/metrics-catalog/categories"
org-graph.health
GETPer-spoke heartbeat for Postgres reachability on `org_graph`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/health"
job-family-agent.soc.list
GETPaginated list of canonical SOC codes (O*NET 28.3 / SOC 2018). 1,016 occupations across 23 SOC major groups; default 100/page, max 500.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/soc/list"
job-family-agent.soc.lookup
GETFetch a single SOC code by canonical id (e.g., '15-1252.00'). Accepts compact ('15-1252') or full forms.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/soc/:code"
job-family-agent.families.list
GETList 23 canonical job families with hierarchy + alternative strings + resolved SOC codes (by major-group alignment).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/families/list"
job-family-agent.families.lookup
GETFetch a single job family by stable id (e.g., 'jf.computer-mathematical') with resolved SOC codes.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/families/:id"
job-family-agent.functions.list
GETList 26 canonical job functions with parent-family links + alternative strings + SOC codes (parsed from source definitions).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/functions/list"
job-family-agent.functions.lookup
GETFetch a single job function by stable id (e.g., 'jfn.engineering') with parent family + alt-strings + SOC codes.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/functions/:id"
job-family-agent.resolve-title
GETJobFrame canon (PAT-JF1): resolve a messy observed title to ranked Family×Focus×Level profile candidates (profileKey e.g. 'SWE.GEN.P6') with confidence band, evidence, and recommendedAction. Alias-exact in MVP; public + also an MCP tool.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/resolve-title"
job-family-agent.construct
GETJobFrame canon: assemble a draft profile top-down from family/focus/level (+ context modifiers) — no blank-page JD. Returns a canonical_job_profile draft.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/construct"
job-family-agent.export
GETJobFrame canon: export a canonical profile as JSON or Markdown (?profileKey=&format=). Plus HRIS bulk-mapping + single-JD analysis + mapping-decision (tenant-overlay) write routes — see the spoke README surface table.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/export"
manager-effectiveness.health
GETPer-spoke Postgres reachability shim on `manager_effectiveness` (heartbeat + tenant weight profile table presence).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/health"
manager-effectiveness.tenant.weights.get
GETReturn merged MEI pillar weights for a tenant (Postgres profile when present, otherwise toolbox defaults mirroring the FiveTran MQI mix).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/weights"
manager-effectiveness.archetype.classify
GETClassify team staffing archetype from net growth, exit rate, and headcount (defaults align with toolbox workforce analytics cut points).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/archetype"
wage-benchmark.benchmark.query
GETMedian hourly wage + p10/p25/p75/p90 + a confidence interval for an SOC × geography. National cells are observed (BLS OEWS, tight CI); sub-national cells are projected from the national anchor with an honestly wide CI until OEWS metro/state tables are ingested. Flags: basis / confidence / observedForCell.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-benchmark/benchmark"
wage-benchmark.benchmark.coverage
GETHonest dataset coverage: occupation count, data year, observed vs. projected geo levels, sources, and the widest-error-bars-first widening roadmap.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-benchmark/coverage"
wage-benchmark.health
GETPer-spoke Postgres reachability shim on `wage_benchmark` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-benchmark/health"
wage-compliance.jurisdictions.rules
GETReturn the active applied rule_version for a known jurisdiction_id + rule family + classification + evaluation date.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/jurisdictions/:id/rules"
wage-compliance.alerts.list
GETList compliance alerts (law change / new failure / expiring rule / conflict / refresh failure). Filterable by organizationId, status, severity, alertType. v0 read surface; PAT-87 temporal diff agent populates rows.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/alerts"
wage-compliance.rule-changes.recent
GETTemporal diff feed of rule-version changes (increase / decrease / correction / expiration / override). Filterable by `since` + `changeType`. v0 read surface; PAT-87 temporal diff agent populates rows.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/rule-changes/recent"
wage-compliance.review-queue.list
GETPAT-94 — List review-queue items for an organization. Filterable by status + assigned_to; cursor-paginated newest-first.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue"
wage-compliance.review-queue.get
GETPAT-94 — Fetch a single review-queue item with embedded recent notes + recent audit events. One call powers the operator item-detail view.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue/:id"
wage-compliance.review-queue.audit
GETPAT-94 — Paginated audit history for a single review-queue item (created / assigned / unassigned / status_changed / note_added / exported). Newest-first.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue/:id/audit"
wage-compliance.diff-agent.run
GETPAT-87 — Run the temporal diff agent. Scans pending `rule_versions` added in the lookback window, classifies the change vs the current canonical version, emits one `rule_change_events` row per change + tiered `compliance_alerts` per affected organization (informational ≥90d / warning ≥30d / critical ≥7d / immediate <7d or active). Scheduled daily at 09:00 UTC via vercel.ts; MCP tool is the manual trigger.
curl -sS "https://people-analytics-toolbox.vercel.app/api/cron/wage-compliance/run-diff-agent"
wage-compliance.jurisdiction-discovery.scan
GETPAT-102 — Jurisdiction-discovery AI agent (third toolbox AI consumer). Scans curated US government sources for new minimum-wage ordinances or statutes not yet represented in `wage_compliance.jurisdictions`. Official-domain trust scoring (.gov / state.xx.us → high; HR aggregators → medium; everything else → low). Persists every candidate to `wage_compliance.discovery_candidates`; high-trust + confidence ≥ 0.9 candidates auto-escalate to the PAT-94 review queue. Scheduled weekly at 10:00 UTC Tuesdays via vercel.ts; MCP tool is the operator override for ad-hoc scans.
curl -sS "https://people-analytics-toolbox.vercel.app/api/cron/wage-compliance/jurisdiction-discovery"
wage-compliance.rules.get
GETPAT-84-FU-B — Drill-down read of a single rule_version: version row + jurisdiction_rule + rule_family + full jurisdiction chain + source citations.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/rules/:ruleVersionId"
wage-compliance.jurisdictions.list
GETPAT-84-FU-B-LIST — Paginated jurisdictions hierarchy fetch. Filterable by parentJurisdictionId, jurisdictionType, stateCode; cursor-paginated (canonical_name asc).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/jurisdictions"
wage-compliance.evaluations.aggregate
GETPAT-84-FU-D — Dashboard KPI aggregate. Returns total/failure/pending-review/upcoming-rule-change counts, estimated annual payroll exposure (|discrepancy| × 2080), per-state failure + exposure rollup, and the last 10 compliance_alerts for an organization. Counts + aggregates only — no PII.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluations/aggregate"
wage-compliance.conflicts.list
GETPAT-95-FU-A — List source-citation conflicts: tuples (jurisdictionId × ruleFamilyId × effectiveStart) where ≥2 rule_versions exist. Returns candidate rule_versions, their citations, and the wage disagreement span.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/conflicts"
wage-compliance.ai-source-validation.scan
GETPAT-103 — Source-validation AI agent. Re-scores wage_compliance.data_sources rows on the high/medium/low trust ladder using a deterministic domain heuristic (`.gov` → high, aggregators → medium) plus AI judgment for the unclassified tail. Writes audit rows to `source_validations` and updates `data_sources.trust_level` in place. Weekly cron + MCP operator tool.
curl -sS "https://people-analytics-toolbox.vercel.app/api/cron/wage-compliance/source-validation"
wage-compliance.ai-conflict-detection.scan
GETPAT-104 — Conflict-detection AI agent. Reads the PAT-95-FU-A conflict list and writes one draft resolution per conflict tuple to `conflict_resolution_drafts` for operator approval. Drafts never mutate rule_versions directly — committing routes through PAT-95-FU-B. Weekly cron + MCP operator tool.
curl -sS "https://people-analytics-toolbox.vercel.app/api/cron/wage-compliance/ai-conflict-detection"
wage-compliance.ai-confidence-scoring.score
GETPAT-105 — Confidence-scoring agent. 4-factor model (0.40 source / 0.20 extraction / 0.20 temporal / 0.20 cross-source) over each rule_version; writes `rule_versions.confidence_score` in place. Daily cron + inline hook from PAT-85 refresh + MCP operator tool.
curl -sS "https://people-analytics-toolbox.vercel.app/api/cron/wage-compliance/ai-confidence-scoring"
worker-resolution.health
GETPer-spoke Postgres heartbeat shim on `worker_resolution`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/worker-resolution/health"
Service-key write endpoints
POST endpoints require the toolbox service key (PAT-11). Set TOOLBOX_SERVICE_KEY in your shell first; key issuance is covered in your operator briefing. Both header forms are accepted: Authorization: Bearer <key> or x-toolbox-service-key: <key>.
reincarnation.adaptive-selection
POSTSERVICE KEY REQUIRED
Information-gain-weighted adaptive item selection from a galaxy's pools.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/adaptive-selection" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'reincarnation.responses-ingest
POSTSERVICE KEY REQUIRED
Bulk-ingest respondent answers for psychometric scoring.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/responses/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'reincarnation.galaxies.register
POSTSERVICE KEY REQUIRED
Idempotent consumer bootstrap: register a pool galaxy, universal items (RIDs), and study items (SIDs) in one atomic transaction.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/galaxies" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'reincarnation.galaxies.items-append
POSTSERVICE KEY REQUIRED
Append RIDs and/or study items to an existing galaxy (404 if galaxy_id is unknown); same idempotency semantics as galaxies.register.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/reincarnation/galaxies/:id/items" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-calibration.pairs.ingest
POSTSERVICE KEY REQUIRED
UPSERT `{ employeeId × cycleId }` calibration rows per tenant (`parseRating` normalization; optional ELT/L3/L4/L5 leader chain persisted for rollups).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-calibration/pairs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.rating-ops-convergence
POSTSERVICE KEY REQUIRED
Q1: Pearson convergence between normalized ratings + operational composites with structured diagnostic-chain rankings.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/rating-ops-convergence" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.validity-scorecard
POSTSERVICE KEY REQUIRED
Q2: Reliability facets (test–retest, optional ICC inter-rater, cross-cycle stability) plus convergent / predictive / discriminant correlations.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/validity-scorecard" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.predictability-decomposition
POSTSERVICE KEY REQUIRED
Q3: Stacked additive OLS R² deltas using shared inference primitives (baseline → progressively richer covariates).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/predictability-decomposition" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.trajectory-slope
POSTSERVICE KEY REQUIRED
Q4: Per-employee longitudinal slope/regression diagnostics with pooled-mean regression-to-mean heuristics.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/trajectory-analysis" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.calibration-value-add
POSTSERVICE KEY REQUIRED
Q5: Five-test calibration ROI panel inferred from PAT-159 rollups fetched over HTTP — validity/reliability/convergence/noise probes.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/calibration-value-add" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.analyze.change-attribution
POSTSERVICE KEY REQUIRED
Q6: Ranked explanatory factors comparing two calibration cycles via performance-calibration trajectories fetched over HTTP.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/change-attribution" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.mei.evidence.upsert
POSTSERVICE KEY REQUIRED
Persist univariate predictive r² summaries (per MEI domain × analytic cycle × outcome) that feed manager-effectiveness empirical weight blends.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/mei-predictive-evidence" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.alignment
POSTSERVICE KEY REQUIRED
PA Instrument — Rater alignment diagnostics: per-item convergence between observed ratings.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/alignment" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'performance-validity.directional-alignment
POSTSERVICE KEY REQUIRED
PA Instrument — Up/down/lateral directional alignment between a focal rater and each cohort.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/directional-alignment" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.surveys.create
POSTSERVICE KEY REQUIRED
Create a survey definition with sections + questions in one bundle.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/surveys" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.surveys.responses
POSTSERVICE KEY REQUIRED
Submit respondent answers; per-question rejection reasons returned alongside accepts.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/surveys/:id/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.surveys.tasks
POSTSERVICE KEY REQUIRED
Materialize deterministic MaxDiff / Conjoint task assignments for one survey respondent.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/surveys/:id/respondents/:respondentId/tasks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.maxdiff.generate
POSTSERVICE KEY REQUIRED
PA Instrument — Generate deterministic MaxDiff task sets from an item list.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/maxdiff/generate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.maxdiff.score
POSTSERVICE KEY REQUIRED
PA Instrument — Score MaxDiff responses into per-item and per-variable preference weights.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/maxdiff/score" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'preference-modeler.present-future
POSTSERVICE KEY REQUIRED
PA Instrument — Present-vs-future dimension gap analysis from marker responses.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/preference-modeler/present-future" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'program-evaluation.experiments.create
POSTSERVICE KEY REQUIRED
Service-key gated experiment metadata + treatment arms (normalized randomization weights) under PAT-N7 tenant context.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/experiments" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'program-evaluation.experiments.pre-register
POSTSERVICE KEY REQUIRED
Immutable pre-registration bundle with SHA-256 digest (409 if an operator attempts to rewrite an existing row).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/experiments/:id/pre-register" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'program-evaluation.assignments.resolve
POSTSERVICE KEY REQUIRED
Deterministic HMAC-weighted arm selection for `(experimentId, subjectId)` with lazy assignment persistence.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/assignments/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'program-evaluation.lift.estimate
POSTSERVICE KEY REQUIRED
Difference-in-means vs baseline with bootstrap CI; requires successful pre-registration digest verification first.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/program-evaluation/experiments/:id/lift" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'talent-value.inputs.upsert
POSTSERVICE KEY REQUIRED
Service-key gated upsert of a tenant's per-segment ELV inputs (HCROI, avg annual cost, tenure-at-exit + provenance) keyed by segmentation-studio segment id.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/talent-value/inputs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'talent-value.activation.upsert
POSTSERVICE KEY REQUIRED
Service-key gated upsert of a tenant's per-segment activation readings (activated/eligible headcount or precomputed NA% + basis + provenance) — the NA% basis for NAV.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/talent-value/activation" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'leadership-quality.score.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless compute of a Leadership Quality index from a supplied component-reading set (no persistence).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/leadership-quality/score" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'leadership-quality.readings.upsert
POSTSERVICE KEY REQUIRED
Service-key gated upsert of a subject's component readings (sub-index + drill-down + provenance) keyed by component.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/leadership-quality/readings" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.programs.upsert
POSTSERVICE KEY REQUIRED
Service-key gated upsert of a survey program (cadence/engine/status + optional triggers + fatigue policy).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/programs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.waves.schedule
POSTSERVICE KEY REQUIRED
Service-key gated wave scheduling/materialization with an audience snapshot hash.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/waves" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.triggers.ingest
POSTSERVICE KEY REQUIRED
Service-key gated ATS/HRIS event ingestion → matching-trigger evaluation → wave scheduling (fatigue-respecting).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/triggers/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.responses.link
POSTSERVICE KEY REQUIRED
Service-key gated wave invite/response record linked to the program's longitudinal respondent (same person across waves) + fatigue decision.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.attrition.records.upsert
POSTSERVICE KEY REQUIRED
Service-key gated from-to movement records (reverse-exit 'from' + key-talent-exit 'to') — the attrition-analysis substrate (PAT-183).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/attrition/records" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.attraction.analyze
POSTSERVICE KEY REQUIRED
Service-key gated stateless Attraction analysis: funnel-stage yields + offer-accept rate + 0–100 brand/consideration index per segment, min-N suppressed (PAT-185, low priority).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/attraction/analyze" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'data-anonymizer.redact
POSTSERVICE KEY REQUIRED
Redact PII spans from text; returns redacted text + flagged spans with category/risk.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/redact" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{
"text": "Please contact Jane Doe at jane@acme.example for details.",
"tenantId": "demo"
}'data-anonymizer.tokenize
POSTSERVICE KEY REQUIRED
Deterministic HMAC-keyed tokenization with per-tenant cache.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/tokenize" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'data-anonymizer.min-n-check
POSTSERVICE KEY REQUIRED
Cohort-size privacy gate.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/min-n-check" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'data-anonymizer.transform
POSTSERVICE KEY REQUIRED
Apply a deterministic anonymization strategy to a scalar value (faker + keyed hashing; tenant-scoped).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/data-anonymizer/transform" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.hris-ingest
POSTSERVICE KEY REQUIRED
Raw HRIS rows → normalized rows + suggested field mappings against the canonical-field priority catalog.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/hris/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.hris.sync.workday
POSTSERVICE KEY REQUIRED
PAT-65 — Workday SOAP (`Get_Workers`) OR PAT-92 OAuth + Reports-as-a-Service pull mapped through canonical-fields and persisted into tenant-scoped `segmentation_studio.workforce_*` plus `segmentation_studio.ingestion_jobs` audit (returns `runId`, `datasetId`, counts).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/hris/sync/workday" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.hris.sync.bamboo
POSTSERVICE KEY REQUIRED
PAT-65-FU-A — BambooHR REST (+ Basic auth via env-referenced api key pull) persisted into tenant-scoped workforce datasets plus `segmentation_studio.ingestion_jobs` audit (`runId`), matching the Workday PAT-65 loop. Toolbox tenant context required.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/hris/sync/bamboo" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.segments-define
POSTSERVICE KEY REQUIRED
Register a SegmentDefinition (criteria-based) into custom_segments.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/segments/define" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.cohorts-resolve
POSTSERVICE KEY REQUIRED
Multi-membership cohort resolution: criteria → memberIds + segmentNodeIds.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/cohorts/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{
"tenantId": "demo",
"criteria": {
"any": [
{ "field": "function", "op": "eq", "value": "engineering" }
]
}
}'segmentation-studio.identity-resolve
POSTSERVICE KEY REQUIRED
Batch union-find identity clustering on normalized email + exact/fuzzy name (Levenshtein-backed); returns clusters, deduplication rate, and conflict strings.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/identity/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.recipes-define
POSTSERVICE KEY REQUIRED
Register a derived-dimension recipe (bin breakpoints, key map, or template string) against normalized HRIS fields.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/recipes/define" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.recipes-run
POSTSERVICE KEY REQUIRED
Execute a stored recipe on normalized rows; persists recipe_runs audit row and returns synthetic dimension nodes + memberships.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/recipes/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.packs-publish
POSTSERVICE KEY REQUIRED
Snapshot current dimensions, nodes, and memberships into a versioned segmentation_packs row; returns the full pack envelope.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/packs/publish" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.data-join.run
POSTSERVICE KEY REQUIRED
Anchor-supplemental data join: merge an anchor HRIS file with N supplemental files using per-column FieldAction policy (OVERWRITE / IGNORE / FILL_HOLES). Returns joinedData, column lineage, overlap conflict report, and unjoined records (PAT-20-FU-A; sequel to identity-resolve).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/data-join/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.hris-ingest.onemodel
POSTSERVICE KEY REQUIRED
Ingest a OneModel admin-export ZIP (base64-encoded). Parses the four required catalogs (metrics / dimensions / tables / entity_relationships), runs canonical-field detection on dimension labels, and persists a semantic_profiles row (PAT-20-FU-B; donor conductor `/api/import/onemodel-zip`).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/hris/ingest/onemodel" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.custom-segments.author
POSTSERVICE KEY REQUIRED
Tenant custom segments (PAT-58): author a new logical segment (v1) or append a new version when (tenantId, name) already exists. Predicate uses the same JSON-tree language as canonical segments.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/custom-segments" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.upload
POSTSERVICE KEY REQUIRED
Multipart HRIS file upload; creates tenant-scoped workforce_dataset with content-hash idempotency (409 returns existingDatasetId). Requires x-toolbox-tenant-id.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/upload" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.parse
POSTSERVICE KEY REQUIRED
Parse uploaded CSV (skips vendor metadata rows); stages workforce_dataset_rows.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/parse" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.recognize
POSTSERVICE KEY REQUIRED
Multi-signal column recognition Pass 1-4 with Bayesian-weighted aggregation.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/recognize" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.map
POSTSERVICE KEY REQUIRED
Operator mapping confirmations; updates signal_accuracy_priors and lynchpin cascade.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/map" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.review
POSTSERVICE KEY REQUIRED
Identity resolution, value-level segment mapping, source profile card generation.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/review" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.workforce-datasets.persist
POSTSERVICE KEY REQUIRED
Mark dataset persisted (idempotent).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/workforce-datasets/:id/persist" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.schemas.create
POSTSERVICE KEY REQUIRED
PAT-122: Persist a SegmentationSchemaVersion (hash + UUID assigned server-side; draft default unless caller passes active). Comparable groups mirrored into segmentation_comparable_groups.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.schemas.branch
POSTSERVICE KEY REQUIRED
PAT-122: Cut a descendant draft schema off a validated SchemaRef (`version` increments `-branchName.<n>` per schema_id family).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas/branch" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.schemas.diff
POSTSERVICE KEY REQUIRED
PAT-122: Compute `SchemaDiff` between two stored schema refs (`computeSchemaDiff` PAT-121) — unsalted read path without service keys.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas/diff" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.schemas.snapshot
POSTSERVICE KEY REQUIRED
PAT-122: Idempotently freeze a `{schemaVersionId,schemaHash}` row into segmentation_schema_snapshots (201 on first insert; 200 on repeat).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/schemas/snapshot" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.declarative-segmentation.rules.put
POSTSERVICE KEY REQUIRED
PAT-160: Replace the entire declarative ruleset for a tenant (optional donor sheet rows appended). Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/declarative-segmentation/rules" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'segmentation-studio.declarative-segmentation.evaluate
POSTSERVICE KEY REQUIRED
PAT-160: Evaluate declarative rules over a workforce record batch; uses tenant store and/or inline rules plus optional donor sheet overlays. Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/segmentation-studio/declarative-segmentation/evaluate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.oaxaca
POSTSERVICE KEY REQUIRED
Oaxaca–Blinder mean outcome gap decomposition (pooled / two-fold / three-fold) between two cohorts.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/oaxaca" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.diagnostics
POSTSERVICE KEY REQUIRED
OLS regression diagnostics (leverage, Cook's D, residuals, fitted) plus optional 1-D DBSCAN on residuals.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/diagnostics" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.stats-enrich
POSTSERVICE KEY REQUIRED
Enrich a metric envelope with confidence intervals, z-score, percentile, and change-rate.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/stats/enrich" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.stats-trend
POSTSERVICE KEY REQUIRED
Classify a periods array as rising / stable / falling with OLS slope and change rate.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/stats/trend" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{
"periods": [
{ "period": "2025-Q1", "value": 70 },
{ "period": "2025-Q2", "value": 75 },
{ "period": "2025-Q3", "value": 80 }
]
}'calculus.stats-impute
POSTSERVICE KEY REQUIRED
Expand an irregular period grid (monthly/quarterly cadence) with forward-fill, linear interpolation, or gap flagging.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/stats/impute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.stats-anomaly
POSTSERVICE KEY REQUIRED
Flag time-series points via z-score threshold, IQR fences, and step-change outliers on first differences.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/stats/anomaly" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.factory-build
POSTSERVICE KEY REQUIRED
Combinatorial metric × segment × period grid: build envelopes from a values array, enrich each, return ranked list (impact / significance / change / recency / sample-size). Optional ?persist=true writes envelopes to metric_envelopes.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/factory/build" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.governance.check
POSTSERVICE KEY REQUIRED
Governance-flag layer over a record set: distribution-equity, harshness-bias, recency-bias, calibration-spread (PAT-6-FU).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/governance/check" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.monte-carlo.run
POSTSERVICE KEY REQUIRED
PAT-147-C: deterministic Monte Carlo batches with JSONB persistence (per-tenant idempotent run_key) plus numeric column summaries.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/monte-carlo/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.regression-surrogate.fit
POSTSERVICE KEY REQUIRED
PAT-147-C: fits an OLS surrogate (ridge ε=1e-6 fallback when singular) from inline trials or a stored MC run id and inserts `surrogate_models`.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/regression-surrogate/fit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.regression-surrogate.forward
POSTSERVICE KEY REQUIRED
PAT-147-C surrogate forward prediction with t-based 95% mean-response interval.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/regression-surrogate/forward" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.regression-surrogate.inverse
POSTSERVICE KEY REQUIRED
PAT-147-C surrogate inverse payout solver (interaction-aware) with linearized CI propagation from mean-response SE.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/regression-surrogate/inverse" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.distribution-fit
POSTSERVICE KEY REQUIRED
PA Instrument — Fit a sample distribution and report goodness-of-fit diagnostics.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/distribution-fit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'calculus.importance-reconcile
POSTSERVICE KEY REQUIRED
PA Instrument — Reconcile stated vs derived importance weights across items.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/importance-reconcile" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.models.create
POSTSERVICE KEY REQUIRED
Create a tenant-scoped factor model header (latent factors + outcome) before registering weight versions.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/models" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.versions.register
POSTSERVICE KEY REQUIRED
Append an immutable model_version row plus relational factor_weights edges.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/models/:id/versions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.versions.validate
POSTSERVICE KEY REQUIRED
Compute holdout correlation / MAE / R² and persist segment fairness snapshots for publish gating.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/models/:id/versions/:versionId/validate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.publish
POSTSERVICE KEY REQUIRED
Advance models.current_version_id only when a passing validation_report exists (409 otherwise).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/models/:id/publish" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.scores.compute
POSTSERVICE KEY REQUIRED
Score a subject against the published current version; lazily memoizes `(versionId × subject × factor)` rows for deterministic repeat reads.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/scores/:modelId/:subjectId" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.analytics-plan
POSTSERVICE KEY REQUIRED
PA Instrument — Analytics-Plan Generator: rank candidate models by exec-priority relevance + emit a value-of-information-ranked measurement plan.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/analytics-plan" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.empirical-importance
POSTSERVICE KEY REQUIRED
PA Instrument — Empirical importance from observed-outcome variance (√variance × priority weight, normalized 0–100); feeds calculus.importance-reconcile.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/empirical-importance" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.monte-carlo.run
POSTSERVICE KEY REQUIRED
Run a deterministic seeded Monte Carlo over named distributions and a closed-form expression.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/monte-carlo/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.decision-models.create
POSTSERVICE KEY REQUIRED
Register a reusable decision tree (VOI / EVPI substrate).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/decision-models" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.voi.compute
POSTSERVICE KEY REQUIRED
Compute baseline EV, perfect-information EV, EVPI, and optional discrete EVSI for aligned shared uncertainty.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/voi/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.interval-scoring
POSTSERVICE KEY REQUIRED
PA Instrument — Score interval estimates against realized outcomes (coverage + sharpness).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/interval-scoring" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.bayesian-combine
POSTSERVICE KEY REQUIRED
PA Instrument — Bayesian combination of multiple estimate sources into a posterior.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/bayesian-combine" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecasting.measurement-recommend
POSTSERVICE KEY REQUIRED
PA Instrument — Recommend a measurement method given a construct and constraints.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecasting/measurement-recommend" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.positions.upsert
POSTSERVICE KEY REQUIRED
Service-key gated batch upsert that writes append-only audit events feeding denormalized `positions` totals.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/positions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.forecast.run
POSTSERVICE KEY REQUIRED
Materialize a persisted forecast_snapshot using rolling-average hires/exits heuristics bounded by toolbox position_events.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/forecast/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.forecast.exits
POSTSERVICE KEY REQUIRED
Segment-aware trailing exit-rate forecast (defaults to ~12-month lookback) with optional regretted attribution from structured position_events taxonomy.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/forecast/exits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.forecast.funnelThroughput
POSTSERVICE KEY REQUIRED
ATS funnel throughput forward hires from cohort conversion rates (application_status + offer_states) with persisted forecast_snapshot telemetry.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/forecast/funnel-throughput" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.forecast.projection
POSTSERVICE KEY REQUIRED
Combined head-count balance sheet marrying exit pacing + ATS funnel hires; persists a composite forecast_snapshot envelope.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/forecast/projection" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.reconciliation.run
POSTSERVICE KEY REQUIRED
Freezes reconciliation_snapshots capturing HR/Budget/ATS variance using live `positions` grain inputs.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/reconciliation/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.ats.webhook.greenhouse
POSTSERVICE KEY REQUIRED
Signature-verified Greenhouse webhook ingest that upserts ATS rows + optional hire/exit deltas when JOB→POSITION env map is wired.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/ats/webhook/greenhouse" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.matches.propose
POSTSERVICE KEY REQUIRED
PAT-D1-B-FU-C batch Conductor matcher — Beta prior + feature likelihood ratios over open HRIS slots; persists requisition_matches + audit rows.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/propose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.matches.accept
POSTSERVICE KEY REQUIRED
Operator accepts a ranked slot; flips HRIS lifecycle to reconciled-by-operator + updates conjugate Beta on success ledger insert.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/:requisitionId/accept" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.matches.rejectAndCreateNew
POSTSERVICE KEY REQUIRED
Operator rejects all suggestions and mints `open-newly-created`; ledger bumps Beta "reject" atomically once.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/:requisitionId/reject-and-create-new" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.matches.override
POSTSERVICE KEY REQUIRED
Operator binds an off-list toolbox position without diluting conjugate Beta (explicit override semantics + audited reason).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/:requisitionId/override" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'workforce-planning.matches.reconcileExpiredExits
POSTSERVICE KEY REQUIRED
Idempotent TTL job — flips stale `open-from-exit` rows to `open-newly-created` when exit_date + exit_ttl_days has elapsed.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/matches/reconcile-expired-exits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.models.create
POSTSERVICE KEY REQUIRED
Register a compensation model and its market bands (dimensions × pay mix).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/models" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.evaluate
POSTSERVICE KEY REQUIRED
Stateless evaluation: employees × model → recommendations (percentile, target pay, confidence).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/evaluate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.cycles.run
POSTSERVICE KEY REQUIRED
Bulk evaluation with persistence to comp_evaluations (audit trail per cycle).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/cycles/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.market.labor-rate
POSTSERVICE KEY REQUIRED
Look up a BLS-derived labor-market rate (voluntary attrition / hire / opening / employment) for (socCode, geo, period). Geo/period fallback supplied (PAT-18-FU-A; donor market-data-backend).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market/labor-rate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{
"metric": "voluntary_attrition",
"socCode": "15-1252",
"geo": "national",
"period": "2024"
}'anycomp.market.exit-risk-prior
POSTSERVICE KEY REQUIRED
BLS-baseline exit-risk prior for a segment, with optional compensation-percentile opportunity adjustment (PAT-18-FU-A).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market/exit-risk-prior" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.market.tier-classify
POSTSERVICE KEY REQUIRED
Classify a value into Low / Mid / High tier using 33rd / 66th cohort-percentile thresholds (BLS labor metrics; PAT-18-FU-A).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market/tier-classify" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.market-movement.history.ingest
POSTSERVICE KEY REQUIRED
PAT-147-G — Batch append canonical or tenant-overlay market midpoint history for (job family, job level); tenant context required.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market-movement/history/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.market-movement.fit
POSTSERVICE KEY REQUIRED
PAT-147-G — YoY derivation + lag surrogate fit (pooled fallback <10 rows) persisted to calculus.surrogate_models.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market-movement/fit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.market-movement.forecast
POSTSERVICE KEY REQUIRED
PAT-147-G — MC envelope + surrogate mean CI forward movement percentiles for configured horizon.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/market-movement/forecast" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.engines.merit.run
POSTSERVICE KEY REQUIRED
PAT-147-B CompEngine merit matrix on shared enriched population; optional per-cycle JSON config persistence.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engines/merit/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.engines.variable-pay.run
POSTSERVICE KEY REQUIRED
PAT-147-B variable-pay / annual incentive engine (Mode A v0; Mode B placeholder) with per-unit aggregates.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engines/variable-pay/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.engines.equity.run
POSTSERVICE KEY REQUIRED
PAT-147-B equity pool allocator — proportional split of per–decision-unit budgets by rating multipliers.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engines/equity/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.engines.discretionary.run
POSTSERVICE KEY REQUIRED
PAT-147-B discretionary cash engine keyed by rating with optional population-status adjustments.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engines/discretionary/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.eib.generate
POSTSERVICE KEY REQUIRED
PAT-147-E — Build Workday-style EIB CSV from persisted CompEngine outputs (merit / variable-pay / equity / discretionary). Optional download=1 as text/csv attachment.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/eib/generate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.eib.diff
POSTSERVICE KEY REQUIRED
PAT-147-E — Compare two prior Workday EIB CSV strings and summarize added / removed / changed award lines (employeeId or lineKey join).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/eib/diff" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.vs-plan
POSTSERVICE KEY REQUIRED
Consulting vs.Plan variance: merges area × function × geo actual increments vs budgets (+ optional FY merit % targets) with rollup totals.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/vs-plan" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.pool-metrics
POSTSERVICE KEY REQUIRED
Pool merit / promo / adj spend versus payroll denominator with optional weighted geo-average splits.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/pool-metrics" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.hr-finance-crossover
POSTSERVICE KEY REQUIRED
Tenant-config HR↔finance bridge ratios (comp per FTE, comp % revenue proxy, comp % EBITDA) from explicit payroll + FP&A assumptions.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/hr-finance-crossover" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.comp-lifecycle
POSTSERVICE KEY REQUIRED
Seven-column comp lifecycle workbook vector (hourly detect ×2080, pre/post merit TC vs band-mid promo-isolated ratios).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/comp-lifecycle" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.cr-drift-histogram
POSTSERVICE KEY REQUIRED
Fine-grained comp-ratio histogram with paired employee pre/post counts and configurable bucket windows.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/cr-drift-histogram" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.analytics.dual-nine-box
POSTSERVICE KEY REQUIRED
Perf × Pay-Equity dual nine-box matrices (pre/post) + movement arcs using segmentation-stable bucket IDs.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/analytics/dual-nine-box" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.scenarios.generate
POSTSERVICE KEY REQUIRED
Decision layer (PAT-AC1): priority weights + budget → several distinct scenarios scored on every three-value measure, plus a tradeoff radar (the 'never one option' loop).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/scenarios" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'anycomp.engagements.run
POSTSERVICE KEY REQUIRED
Persisted engagement: save strategy + priorities, run the decision loop, persist scenarios + impacts + audit in one transaction; returns the bundle.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/anycomp/engagements" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.graph.build
POSTSERVICE KEY REQUIRED
Idempotent graph rebuild — materializes org nodes + typed temporal edges for `(tenantId, snapshotId)` from worker-resolution rows.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/graph/build" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.query.resolve-ancestor
POSTSERVICE KEY REQUIRED
As-of supervisory (or typed hierarchy) parent chain for a single worker node.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/query/resolve-ancestor" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.query.ancestor-chains
POSTSERVICE KEY REQUIRED
Memoized ancestor stacks for many leaf nodes in one call.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/query/ancestor-chains" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.elt.substring-match
POSTSERVICE KEY REQUIRED
Stateless substring roster match for ELT workbook-style HRIS strings.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/elt/substring" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.inference.dominant-dept
POSTSERVICE KEY REQUIRED
Dominant dept→ELT empirical edges with fractional confidence.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/inference/dominant-dept" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.consistency.report
POSTSERVICE KEY REQUIRED
Orphans, cycles, multi-parent clashes, dangling manager edges.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/consistency/report" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.snapshot.diff
POSTSERVICE KEY REQUIRED
Diff two snapshots — mover map, subtree graft heuristic, span-of-control deltas with optional magnitude threshold.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/snapshot/diff" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'org-graph.rollup.leader-metrics
POSTSERVICE KEY REQUIRED
Leader-per-layer rollup of leaf measures mirroring workbook leader-metrics passes.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/org-graph/rollup/leaders" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.classify
POSTSERVICE KEY REQUIRED
Token-overlap heuristic classifier: free text → up to 8 SOC matches with confidence + best-guess job family + job function. Direct SOC matches detected in text override the heuristic. Stateless; public + IP-rate-limited at 100 req/min.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/classify" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'manager-effectiveness.composite.compute
POSTSERVICE KEY REQUIRED
Nine-domain hierarchical Manager Effectiveness Index (MEI) composite (0–100) with optional measure ladder payload, flight-risk penalty, and tenant-persisted pillar weights.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/composite" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'manager-effectiveness.tenant.weights.upsert
POSTSERVICE KEY REQUIRED
UPSERT the nine canonical pillar weights per tenant (service key; sum-to-one validation via Zod).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/weights" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'manager-effectiveness.tenant.weights.recalibrate
POSTSERVICE KEY REQUIRED
Blend pooled Q2-derived per-domain explanatory mass with FiveTran-informed priors, UPSERT merged MEI pillar weights per tenant, and append an analyst-facing audit row.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/manager-effectiveness/weights/recalibrate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.jurisdictions.resolve
POSTSERVICE KEY REQUIRED
Resolve a work-location address into its hierarchical jurisdiction chain with precision tier + ambiguity flags + rooftop-pending indicator (PAT-89 future).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/jurisdictions/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.evaluate.single
POSTSERVICE KEY REQUIRED
Stateless single-worker compliance evaluation: pass/fail/warning/unknown with full evaluation trace + jurisdiction chain + applied rule.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluate/single" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.evaluate.bulk
POSTSERVICE KEY REQUIRED
Stateless bulk compliance evaluation (≤10,000 workers) with per-worker results + aggregate pass/fail/warning/unknown counts.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluate/bulk" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.evaluate.offer
POSTSERVICE KEY REQUIRED
PAT-90 — Stateless single-offer (ATS / pre-hire) compliance evaluation. Resolves the candidate's location, looks up the applicable rule, returns pass/warning/fail/unknown plus a `recommendedHourlyWage` (required + 1¢ buffer) when failing. Writes an `api`-source row to wage_compliance.offer_evaluations_audit (fire-and-forget).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluate/offer" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.evaluate.posting
POSTSERVICE KEY REQUIRED
PAT-100 — Stateless pay-transparency posting / offer-letter validation. Resolves the jurisdiction (id or location), looks up the applicable `pay-transparency` rule_version, and returns pass/fail + `missingFields[]`. `noObligation=true` when the jurisdiction has no transparency rule on file (outcome still `pass`).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluate/posting" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.evaluate.paid-leave
POSTSERVICE KEY REQUIRED
PAT-99-FU-A — Stateless paid-leave accrual + eligibility evaluation. Given a rule_version id (from the PAT-99 seed) + worker YTD hours-worked + employment start date + optional carryover, returns a `PaidLeaveFinding` (accrued hours, available balance, days-until-eligible, paid / job-protected / FMLA-compatible flags). Supports per-hour / front-load / fixed-bank accrual methods.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/evaluate/paid-leave" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.worker-classification.evaluate
POSTSERVICE KEY REQUIRED
PAT-97 — Advisory FLSA + state heuristic classifier for industry-specific exemption / tipped / prevailing-wage / independent-contractor patterns. Stateless; optional `industry` selects layered rulesets (generic default). Does not substitute for legal advice.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/worker-classification" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.alerts.acknowledge
POSTSERVICE KEY REQUIRED
Acknowledge a compliance alert — flip status from `open` to `reviewed` or `resolved`. Idempotent.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/alerts/:id/acknowledge" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.review-queue.create
POSTSERVICE KEY REQUIRED
PAT-94 — Create a review-queue item from an existing compliance_evaluation row. Writes a 'created' audit event. Persistent; pairs with stateless evaluate.single / evaluate.bulk to land specific results into the operator review workflow.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.review-queue.assign
POSTSERVICE KEY REQUIRED
PAT-94 — Assign (or unassign with `assigneeId: null`) a review-queue item to an operator. Writes an 'assigned' / 'unassigned' audit event. Idempotent.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue/:id/assign" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.review-queue.set-status
POSTSERVICE KEY REQUIRED
PAT-94 — Transition a review-queue item's status (new / under_review / approved / exported / resolved / dismissed). Writes a 'status_changed' (or 'exported') audit event capturing the previous status.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue/:id/status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.review-queue.add-note
POSTSERVICE KEY REQUIRED
PAT-94 — Append a free-text note to a review-queue item; atomically bumps notes_count and writes a 'note_added' audit event referencing the new note id.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/review-queue/:id/notes" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.exports.generate
POSTSERVICE KEY REQUIRED
PAT-91 — Generate a payroll-vendor export pack (ADP / UKG / Paychex) for a set of compliance_evaluation rows. Uploads CSV to Vercel Blob with a 7-day signed-URL TTL, writes a row to wage_compliance.exports_audit, and (when reviewQueueId is provided) a companion 'exported' audit event to review_queue_audit. Vendor is part of the path: /api/spokes/wage-compliance/exports/[vendor].
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/exports/:vendor" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.alerts.assign
POSTSERVICE KEY REQUIRED
PAT-84-FU-C — Assign a compliance_alert to an operator. Writes to wage_compliance.alert_assignments; fire-and-forget audit to mcp.mcp_audit.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/alerts/:id/assign" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.alerts.add-note
POSTSERVICE KEY REQUIRED
PAT-84-FU-C — Append a free-text note (≤10,000 chars) to a compliance_alert. Writes to wage_compliance.alert_notes; fire-and-forget audit to mcp.mcp_audit.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/alerts/:id/notes" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-compliance.conflicts.resolve
POSTSERVICE KEY REQUIRED
PAT-95-FU-B — Resolve a source-citation conflict. Flips the accepted rule_version to `validated`, supersedes siblings on the same (jurisdictionId × ruleFamilyId × effectiveStart) tuple, writes an audit row to wage_compliance.conflict_resolutions.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-compliance/rules/:ruleVersionId/resolve-conflict" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'worker-resolution.resolve
POSTSERVICE KEY REQUIRED
Two-Pass Self-Healing join: learning index fortification followed by deterministic merge with HRIS vault, ladder matching, lineage, admissions policy, aliases learned, failures roster.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/worker-resolution/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'MCP gateway
POST /api/mcp — Streamable HTTP + . Per-consumer auth via TOOLBOX_MCP_KEY_<CONSUMER> env vars; each key maps to a scope set in src/lib/mcp/auth.ts. Sequential calls hit the same warm instance via the Mcp-Session-Id header. Per-spoke endpoints exist too: /api/mcp/spokes/<slug> constrains tools to <slug>.*.
StreamableHTTPClientTransport — minimal consumer
TypeScript · @modelcontextprotocol/sdk · service key in env
// scripts/your-mcp-client.ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const url = new URL("/api/mcp", "https://people-analytics-toolbox.vercel.app");
const transport = new StreamableHTTPClientTransport(url, {
requestInit: {
headers: { Authorization: `Bearer ${process.env.TOOLBOX_MCP_KEY}` },
},
});
const client = new Client({ name: "my-consumer", version: "0.0.1" });
await client.connect(transport);
// Discovery
const tools = await client.listTools();
const services = await client.callTool({
name: "toolbox.list_services",
arguments: {},
});
// Call a spoke tool
const feed = await client.callTool({
name: "reincarnation.psychometric-feed",
arguments: {},
});Per-tool examples (with tool-name + argument shape) live on each spoke's page. Start with /spokes/reincarnation for the worked walkthrough. The full onboarding runbook (key generation, scope choice, audit verification) is in docs/EXTERNAL-CONSUMERS.md.
Audit + rate limits
Every MCP tool invocation writes one row to mcp.mcp_audit (PAT-33) capturing the consumer ID, tool name, status, latency, and timestamp. Audit writes are fire-and-forget — a failure to persist the audit row never breaks the tool call. Retention is unbounded today; pruning is a follow-up.
HTTP routes emit one structured JSON log line per request via withRouteLogger: { ts, requestId, route, method, path, status, latencyMs }. Vercel log search filters cleanly on the route: key.
The rate-limit hook is scaffolded but no policy is enforced today (PAT-33). A follow-up wires the policy without touching the call sites; consumer-side back-off behavior shouldn't change.
Reads work right now from any terminal. Writes + MCP need a key — drop Mike a line and you'll have one the same day.