people-graph.connectors
GETList every HRIS/ATS/LMS connector the people-graph supports (live) or plans (planned).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/people-graph/connectors"
API quickstart
Every is callable over plain HTTP and over the Model Context Protocol gateway. 186 read endpoints are public; 267 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.
people-graph.connectors
GETList every HRIS/ATS/LMS connector the people-graph supports (live) or plans (planned).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/people-graph/connectors"
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"
assessment-library.health
GETPer-spoke heartbeat shim for Postgres reachability on `assessment_library`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/assessment-library/health"
assessment-library.kits.list
GETList a tenant's stored rubric kits per Family×Focus×Level (title, version, status, question/criterion counts, defensibility). Falls back to seeded examples.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/assessment-library/kits"
assessment-library.kits.read
GETRead a job's full assessment kit by profileKey — interview question bank, BARS (behaviorally-anchored scales), level-calibrated performance criteria, and the validity/job-relatedness/adverse-impact evidence trail. Falls back to seeded examples.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/assessment-library/kits/:profileKey"
career-development.health
GETPer-spoke heartbeat shim for Postgres reachability on `career_development`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/health"
career-development.career-paths
GETCareer paths FROM a role (ENT-8): the universal-level LADDER (promotions + IC↔management crossover) + the LATTICE of lateral/cross-functional moves from JobFrame coordinate content-space neighbors (real adjacency; no_match neighbors dropped). Public read.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/career-paths"
career-development.learning-catalog.list
GETList a tenant's stored learning catalogs per Family×Focus×Level (title, version, status, objective/tool counts). Falls back to seed catalogs.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/learning-catalog"
career-development.learning-catalog.read
GETRead a role's learning objectives + curated/hot-swappable tools by profileKey (ENT-13). Falls back to a seed-generated catalog.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/learning-catalog/:profileKey"
career-development.growth.read
GETRead a subject's capability-growth roll-up by subjectId: per competency baseline→latest level, growth delta, and whether the target bar was reached. Public read (tenant-scoped).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/growth/:subjectId"
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"
linkage-models.health
GETPer-spoke heartbeat shim for Postgres reachability on `linkage_models`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/health"
linkage-models.models.list
GETList registered linkage models (the Models layer / linkage design graph — PAT-198 crown-jewel Brief 1): name, outcome, status, variable count.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/models"
linkage-models.models.get
GETRead one model with its full variable set.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/models/:id"
linkage-models.models.grounding
GETResolve each variable's Principia prior via principia-connector (honest three-state per variable: found / none / error, + ungrounded). Never fabricated (PAT-150 rule).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/models/:id/grounding"
linkage-models.edges.query
GETQuery linkage routing edges (persona × priority-dimension → construct/model → measure/metric → analytic/spoke), optionally filtered to a node.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/edges"
linkage-models.allocations.list
GETList recorded executive allocation sets for a model.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/allocations"
linkage-models.importance.read
GETRead persisted importance snapshots (stated / empirical / overall / divergence per item; eltStated on elt-scope rows), newest first — divergence is trendable.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/importance"
forecast-strength.health
GETPer-spoke heartbeat shim for Postgres reachability on `forecast_strength`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/health"
forecast-strength.forecasts.list
GETList logged leader forecasts (?leaderId= optional).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/forecasts"
forecast-strength.scores.read
GETA leader's forecast scores + accuracy summary + QUARTERLY calibration trend (hit rates vs nominal coverage; negative gap = overconfident). Computed on read — never stale.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/scores"
forecast-strength.rollup.read
GETELT roll-up: per-leader accuracy summaries + the team aggregate + team trend.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/rollup"
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"
survey-orchestrator.activation.battery
GETPublic read of the canonical CAMS / Activation item battery (12-item on-hand set: 8 validated core C/A/M/S × team/individual + 4 cited extensions; 0–10 scale; Activated≥70 / At-Risk<60). The instrument fielded through reincarnation (PAT-CAMS-INSTRUMENT).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/activation/battery"
survey-orchestrator.pay-satisfaction.battery
GETPublic read of the canonical Pay Satisfaction battery (8-item, four-facet set — Pay Level / Raises / Benefits / Structure & Administration — paraphrased after the PSQ (Heneman & Schwab, 1985) + cited; 0–10 scale). The pay-sat pulse for the Comp Toolbox; fielded through reincarnation (PAT-JFE-PAY-3).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-satisfaction/battery"
survey-orchestrator.pay-fairness-perception.battery
GETPublic read of the Pay Fairness & Equity perceptions battery (11 items across the three organizational-justice dimensions — distributive w/ internal/external/individual equity referents · procedural · interactional — Colquitt 2001 + Adams 1965, paraphrased + cited; 0–10). Measures what KIND of (un)fair, not contentment (PAT-JFE-PAY-6).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-fairness-perception/battery"
survey-orchestrator.pay-elements.bank
GETPublic read of the canonical comp pay-element bank (8 total-rewards elements: base · bonus · equity · benefits · flexibility · growth · security · recognition) fed to preference-modeler's MaxDiff/conjoint/penny machinery (M5–M7, PAT-JFE-PAY-7).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-elements/bank"
survey-orchestrator.entrepreneurial-energy.battery
GETPublic read of the canonical Entrepreneurial Energy vital-sign battery (10-item set: 4 EO posture core — Innovativeness/Proactiveness/Autonomy/Risk-Tolerance, paraphrased after Covin-Slevin & Lumpkin-Dess EO — plus 6 cited CEAI extensions across five dimensions; 0–10 scale; Energized≥65 / At-Risk<50). The instrument fielded through reincarnation (PAT-EE-INSTRUMENT).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/entrepreneurial-energy/battery"
survey-orchestrator.culture-of-innovation.battery
GETPublic read of the canonical Culture of Innovation vital-sign battery (10-item set: 5 TCI/KEYS-anchored core — Shared Vision/Participative Safety/Support for Innovation/Task Orientation/Challenge — plus 5 cited validated extensions including two reverse-coded obstacle items (Edmondson mistake-punishment, KEYS workload-pressure); 0–10 scale; Thriving≥70 / Stalling<40). The innovation-CLIMATE instrument fielded through reincarnation (PAT-COI-INSTRUMENT).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/culture-of-innovation/battery"
survey-orchestrator.leadership-mistake-risk.battery
GETPublic read of the canonical Leadership Mistake-Risk / Derailment battery (10 items across five derailment dimensions: hubris / dissent-suppression / institutional-imperative / volatility / judgment-lapses, grounded in Hayward-Hambrick / Edmondson / Buffett / Hogan / Schyns-Schilling, paraphrased + cited; two reverse-coded good-behavior items). The ACUTE 'mistake' axis (PAT-MISTAKE-RISK-INSTRUMENT).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/leadership-mistake-risk/battery"
network-analysis.health
GETPer-spoke Postgres reachability shim on `network_analysis` (heartbeat table probe against shared Supabase).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/network-analysis/health"
network-analysis.networks.read
GETRead a stored network (header + edges) plus its computed Connectivity read. Tenant via `?tenantId=`. 404 when absent.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/network-analysis/networks/:networkId"
research-methods.health
GETPer-spoke Postgres reachability shim on `research_methods` (heartbeat probe; the capability is stateless compute).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/health"
research-methods.catalog
GETPublic read of the research-methods catalog — the declarative rigor library (statistical tests · assumptions · remedies · sampling methods · the 16 PRN-095 study-design archetypes), each cited to canon + linked to the compute that runs it and the viz that renders it. Optional `?kind=` / `?tag=` filters. The consumer face of the rigor capability (fly the flag).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/catalog"
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.allocations.list
GETRead the position-cost / budget envelope: per-allocation rows (native + FX-snapshot reporting amounts) plus an aggregated envelope grouped by reporting currency over the full filtered set.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/workforce-planning/allocations"
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"
persona-library.list
GETList stored personas (portfolio visibility), filter by vertical/role. MCP: persona-library.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/persona-library/list"
persona-library.get
GETFetch one stored persona by slug or id. MCP: persona-library.get.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/persona-library/get"
gtm-studio.list-artifacts
GETList stored GTM artifacts (portfolio visibility), filter by tool/persona. MCP: gtm-studio.list-artifacts.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/gtm-studio/artifacts"
gtm-studio.get-artifact
GETFetch one stored GTM artifact by id. MCP: gtm-studio.get-artifact.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/gtm-studio/artifacts/:id"
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"
job-family-agent.crosswalk
GETPAT-JFE-ENT-15 — IP-clean public-standards crosswalk: a canonical profile (FAMILY.FOCUS.LEVEL) → its equivalents in the OPEN occupation standards (ESCO · Lightcast LOT/Open Skills · O*NET/SOC), each with confidence + a 3-state band (confident/review/not_mapped) + an auditable open `via` basis. The computed coordinate position is ours; only open codes are stored as join keys (PAT-203). For global benchmarking + EU compliance interop.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/crosswalk"
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"
company-intelligence.companies.search
GETSearch the canonical company-master by signal tag (category:listId), sector, list, or name; returns companies with accumulated list memberships + intelligence.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/companies"
company-intelligence.cohort.get
GETBenchmarking peer cohort — companies sharing a list, category, or sector (the peer set for comp / HR-metric / survey comparison).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/cohort"
company-intelligence.cohort.compare
GETHow a benchmarking cohort's companies differ / what they share: shared + cross-recognition + distinctive list memberships, sector composition, and (when enriched) hiring-focus prevalence + comp signal.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/cohort/compare"
company-intelligence.lists
GETThe list catalog (fast-growing / funding / innovation / employer / excellence / scale) with per-list member counts.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/lists"
company-intelligence.health
GETPer-spoke Postgres reachability shim on `company_intelligence` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/health"
knowledge-graph.entities.search
GETGTM-HKG (PAT-GTM-6). Search graph entities (company · person · role · topic · keyword · content · competitor · market) by kind + name within a tenant. MCP: knowledge-graph.entity.lookup.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/entities"
knowledge-graph.resolve
GETResolve a name/alias to the best-matching entity + candidates (the identity resolver across sources).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/resolve"
knowledge-graph.neighborhood
GETThe core traverse: center + neighbor entities + typed/weighted edges to depth ≤3, with type + min-weight filters. The grounding/gap-analysis call. MCP: knowledge-graph.entity.neighbors.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/neighborhood"
knowledge-graph.health
GETPer-spoke Postgres reachability shim on `knowledge_graph` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/health"
seo.keywords.search
GETGTM-HSEO (PAT-GTM-6). Search researched/tracked keywords by niche/geo/intent/phrase. Volumes are null unless a real provider/GSC supplied them (never fabricated). MCP: seo.keywords.search.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/seo/keywords"
seo.rank-trend
GETRank + clicks/impressions time series for a tracked site (optionally one keyword) — the instrumentation behind a market-inventory Spot's pitch. MCP: seo.rank.trend.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/seo/rank-trend"
seo.sites.query
GETList tracked sites (a Spot directory · client · portfolio), incl. the Spot a site backs (spotId).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/seo/sites"
seo.audits.get
GETFetch a completed audit report + findings by id.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/seo/audits/:auditId"
seo.health
GETPer-spoke Postgres reachability shim on `seo` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/seo/health"
marketing-analytics.properties.list
GETGTM-HMA (PAT-GTM-6). List connected analytics properties (GA4 / GSC / internal), incl. the Spot a property backs. MCP: marketing-analytics.properties.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/properties"
marketing-analytics.metrics.query
GETQuery daily metric rollups (sessions/conversions/gsc_clicks/gsc_position/…). GA4 sampling flagged; nothing fabricated. MCP: marketing-analytics.metrics.query.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/metrics"
marketing-analytics.spots.performance
GETThe HONEST market-inventory Spot traffic number — null + honest:false until real GA4/GSC data is ingested for the Spot's property. MCP: marketing-analytics.spot.performance.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/spots/:spotId/performance"
marketing-analytics.health
GETPer-spoke Postgres reachability shim on `marketing_analytics` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/health"
competitive-intelligence.competitors
GETGTM-HCI (PAT-GTM-6). List tracked competitors (references the company-intelligence master by key; isSelf marks our own properties). MCP: competitive-intelligence.competitors.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/competitors"
competitive-intelligence.movement
GETLongitudinal SERP diff for a competitor between two captures (gains/losses/new/dropped). Positions observed or null, never imputed. MCP: competitive-intelligence.movement.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/competitors/:key/movement"
competitive-intelligence.gaps
GETThe ranked opportunity list — keywords a competitor ranks for that we don't, by priority (feeds SEO + Content). MCP: competitive-intelligence.gaps.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/gaps"
competitive-intelligence.health
GETPer-spoke Postgres reachability shim on `competitive_intelligence` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/health"
ai-inbound.aeo.audits
GETGTM-HAI (PAT-GTM-6). List citability/AEO audits (0-100 score + structured-data/entity/answerability subscores + recommendations). MCP: ai-inbound.aeo.audit (write).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/aeo/audits"
ai-inbound.citation-trend
GETCited-share over answer-engine probe runs — HONEST 3-state (citedShare of observed + explicit unknownShare; never a fabricated citation). MCP: ai-inbound.citation.trend.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/answer-engine/citation-trend"
ai-inbound.llms-txt
GETThe generated AEO answer-feed (llms.txt) for a property — the machine-readable file answer engines fetch. Public.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/llms.txt"
ai-inbound.leads
GETList captured inbound leads (filter by status/intent). MCP: ai-inbound.leads.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/inbound/leads"
ai-inbound.health
GETPer-spoke Postgres reachability shim on `ai_inbound` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/health"
content-development.briefs
GETGTM-HCD (PAT-GTM-6). GET: list content briefs. POST: create a brief (intake of the governed lifecycle; grounds on KG topics/entities, consumes T6/SEO/CI sources — never re-ingests the library). MCP: content-development.briefs.create.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/briefs"
content-development.pieces
GETGET: list content pieces + lifecycle status. POST: promote a brief → piece + first draft (drafting→review). MCP: content-development.pieces.list.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/pieces"
content-development.pieces.get
GETA piece's full detail: immutable versions + optimization checks + publications. MCP: content-development.pieces.get.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/pieces/:id"
content-development.health
GETPer-spoke Postgres reachability shim on `content_development` (heartbeat probe).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/health"
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"
principia-connector.health
GETPer-spoke heartbeat shim for Postgres reachability on `principia_connector`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/health"
principia-connector.priors.get
GETLook up Principia's synthesized Bayesian prior for `from --predicate--> to`. Returns the typed three-state PriorResult (found/none/error) — distribution + r/CI + k + n + grade + provenance/effects URLs. Never fabricates: 'no prior available' is first-class.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/priors/{from}/{predicate}/{to}"principia-connector.items.norms
GETItem norm lookup (PRN-068) — is an item score typical/high/low? Three-state ItemNormResult (found/none/error); norm:null is an honest cold-start, never fabricated.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/items/{id}/norms"principia-connector.open-text-codings.read
GETRead batch-produced open-text codings (PRN-143, HO-058): verbatims auto-coded to canonical construct ids. Customer-derived free text → service-key gated even as a GET. Empty until the live scorer batch runs.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/open-text-codings"
glass-ox.health
GETPer-spoke Postgres reachability shim on `glass_ox` (heartbeat probe). Also seeds the reference `companalyst-coding` plan on first hit so the plans list is never empty on a fresh deploy.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/glass-ox/health"
glass-ox.runs.list
GETList persisted `RunReport` summaries, newest-reported-first. Query params: planSlug, overallStatus (ok|warn|halt), organizationId, limit (cap 200), offset.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/glass-ox/runs"
glass-ox.runs.get
GETFetch a single persisted RunReport by `runId` — rehydrates the full StepManifest DAG (assertions + field profiles + drops-by-reason + joins).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/glass-ox/runs/:runId"
glass-ox.plans.list
GETList registered Glass Ox plans. Seeded with the reference `companalyst-coding` plan so the list is never empty on a fresh deploy.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/glass-ox/plans"
enterprise-jobframe.health
GETPer-spoke Postgres reachability shim on `enterprise_jobframe`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/health"
enterprise-jobframe.scaffold
GETTop-down constructor scaffold for a canon profile (family×focus×level): the universal base + accept/reject component suggestions with 'why suggested'. Pillar 7 — choose + remove, never type a JD. Composes the job-family-agent canon.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/scaffold"
enterprise-jobframe.profiles.list
GETList a tenant's job profiles (tenant-scoped; optional status filter).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles"
enterprise-jobframe.profiles.get
GETFetch one tenant profile + its components + approval-event history.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles/:id"
enterprise-jobframe.profiles.versions
GETThe immutable published-version history of a tenant profile.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles/:id/versions"
enterprise-jobframe.profiles.join
GETThe 3-way join indexed BY JOB: this profile + its associated positions (workforce-planning) + people (org-graph).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles/:id/join"
enterprise-jobframe.overlays.list
GETList a tenant's organizational overlays (philosophy/change/strategy).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays"
enterprise-jobframe.overlays.catalog
GETPAT-JFE-OVERLAY-1: list published organizational overlays available to adopt (philosophy/change-objective/strategy), each with its source-tagged capability fragments. The adoption selector.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/catalog"
enterprise-jobframe.overlays.adoptions.list
GETPAT-JFE-OVERLAY-1: a tenant's overlay adoptions with rollout stats (eligible/injected profiles, adoption rate).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/adoptions"
enterprise-jobframe.overlays.injections.list
GETPAT-JFE-OVERLAY-1: the injection provenance rows — what overlay fragment landed where, from which source, at what version, and whether it composed with Focus.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/injections"
enterprise-jobframe.associations.bySubject
GETThe 3-way join indexed BY POSITION or BY PERSON: which tenant profiles attach to a position/person.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/associations"
enterprise-jobframe.governance.queue
GETThe Governance Review Console queue — the cross-cutting seam. Open review items for this spoke (profile submissions + canon-promotion proposals), tenant-scoped.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/governance/queue"
enterprise-jobframe.promotions.list
GETList canon-promotion proposals (tenant-scoped; optional status filter).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/governance/promotions"
enterprise-jobframe.comp.survey-levels.list
GETList a tenant's stored survey↔universal level equivalencies (optional source/review-status filter). PAT-JFE-ENT-5.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/survey-levels"
enterprise-jobframe.comp.disclosure-policies.list
GETList a tenant's comp-data disclosure policies. PAT-JFE-ENT-12.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/disclosure-policies"
hris-mapper.health
GETPer-spoke Postgres reachability shim on `hris_mapper`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/health"
hris-mapper.datasets.list
GETList a tenant's staged HRIS datasets (tenant-scoped).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/datasets"
hris-mapper.mapping-runs.get
GETA run's clusters + their ranked candidates (with evidence + field confidence).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/mapping-runs"
hris-mapper.review-queue.get
GETThe triage queue for a run: clusters flagged by reason (low_confidence/high_impact/comp_risk/conflict) + a priority score (biggest-leverage first).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/review-queue"
hris-mapper.export.get
GETThe mapping export for a run (JSON or CSV): one row per cluster with the FINAL mapping (decision over prediction) + confidence + band + decision + exception flag.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/export"
jobframe-analytics.health
GETPer-spoke Postgres reachability shim on `jobframe_analytics`.
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/health"
jobframe-analytics.campaigns.list
GETList a tenant's clarification campaigns (optional status filter).
curl -sS "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/campaigns"
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>.
people-graph.resolve
POSTSERVICE KEY REQUIRED
Map raw source rows for a sourceSystem into @people-core CanonicalWorkerRecord[]. Stateless.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/people-graph/resolve" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'prediction.predict
POSTSERVICE KEY REQUIRED
Evidence-grounded people prediction (Mode 1): point estimate + uncertainty interval + confidence band + drivers with published evidence; abstains toward the base rate on thin signal. First outcome: voluntary_turnover_12m. Stateless.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/prediction/predict" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'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 '{}'diagnostic-coaching.adaptive-select
POSTSERVICE KEY REQUIRED
Next adaptive coaching cards for a respondent (effectiveness-ranked, weaker-competency-targeted), each grounded in matched corpus advisory.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/diagnostic-coaching/adaptive-select" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'diagnostic-coaching.responses-ingest
POSTSERVICE KEY REQUIRED
Bulk-ingest respondent reactions to delivered cards (rubric / committed / not-applicable).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/diagnostic-coaching/responses/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'diagnostic-coaching.register
POSTSERVICE KEY REQUIRED
Idempotent bootstrap of competencies + coaching cards for a tenant.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/diagnostic-coaching/register" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'diagnostic-coaching.batch
POSTSERVICE KEY REQUIRED
Population pass: score cards by effectiveness, move pools, rebuild capability profiles.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/diagnostic-coaching/batch" \
-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.criterion-validity
POSTSERVICE KEY REQUIRED
Predictor→criterion validity in situ (HO-036 #3): observed validity coefficient + Fisher-z CI, plus operational validity after range-restriction (Thorndike II) and criterion-unreliability corrections. Predictor & criterion join on subjectId.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/performance-validity/criterion-validity" \
-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 '{}'assessment-library.kits.generate
POSTSERVICE KEY REQUIRED
Service-key gated generation (+optional persist) of a paired rubric kit for a Family×Focus×Level — assembled FROM the canon (job-family-agent /construct) and optionally composing reincarnation validated items. Every item provenance-stamped to its canon component.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/assessment-library/kits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'assessment-library.adverse-impact.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless EEOC four-fifths (4/5ths) adverse-impact computation over per-group applicant/selected counts (defensibility evidence).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/assessment-library/adverse-impact" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'career-development.development-gap
POSTSERVICE KEY REQUIRED
Service-key gated current-role→target-role development gap (ENT-8): the priority-ranked component KSAOs to acquire/deepen, read from the canon and optionally sharpened by the assessment-library kit. May persist.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/development-gap" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'career-development.learning-catalog.generate
POSTSERVICE KEY REQUIRED
Service-key gated generation (+optional persist) of a Learning Objectives & Tools catalog for a Family×Focus×Level (ENT-13). Objectives keyed to canon KSAOs + learning_objective components; tools curated from the CanonicAI capability-guide corpus; we-curate-company-controls (hot-swap + LMS-mappable).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/learning-catalog" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'career-development.measurements.record
POSTSERVICE KEY REQUIRED
Service-key gated capability MEASUREMENT recording (the closed loop) — returns fresh growth roll-ups. The differentiator: tracks capability GROWTH (baseline → re-measure delta), not course completion.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/career-development/measurements" \
-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 '{}'leadership-quality.alignment.compute
POSTSERVICE KEY REQUIRED
PA Instrument — the Executive Alignment dispersion analytic (PAT-199, crown-jewel Brief 3): per-dimension spread + exec-vs-ELT-centroid distance (pennies moved) + level-aware tight/scattered verdicts over N executives' elicited priority allocations. Stateless; pairs with linkage-models stated allocations.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/leadership-quality/alignment" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'linkage-models.models.upsert
POSTSERVICE KEY REQUIRED
Service-key gated register/replace of a causal model: variables with coefficient weights + provenance (the old CoefficientSource enum) + Principia construct/prior grounding hooks.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/models" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'linkage-models.edges.upsert
POSTSERVICE KEY REQUIRED
Service-key gated upsert of routing edges, idempotent on (from, to).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/edges" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'linkage-models.allocations.record
POSTSERVICE KEY REQUIRED
Service-key gated record of an executive's elicited penny-allocation joined to a model's variables → persisted stated importance (normalized to 100); unmatched keys reported, never dropped.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/allocations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'linkage-models.reconcile.run
POSTSERVICE KEY REQUIRED
Service-key gated stated-vs-empirical reconciliation per executive or cross-exec ELT (the lost elt_* aggregation), blended via calculus.importance-reconcile (reused over HTTP, never rebuilt) and persisted as an importance snapshot.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/linkage-models/reconcile" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecast-strength.battery.build
POSTSERVICE KEY REQUIRED
PA Instrument — builds the forecast-elicitation battery (numeric point + 80/90% interval bounds + confidence per measure; elicitation-kit renderable, joinable answer ids). Stateless.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/battery" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecast-strength.forecasts.log
POSTSERVICE KEY REQUIRED
Service-key gated log of a leader's forecasts (point + 80/90 intervals + confidence); re-forecasting a (measure, period) replaces the prior estimate.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/forecasts" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'forecast-strength.actuals.record
POSTSERVICE KEY REQUIRED
Service-key gated record of observed actuals — every matching forecast auto-(re)scores (PAT-200 crown-jewel Brief 2: Winkler interval score, abs error, hit flags).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/forecast-strength/actuals" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.item-benchmarks
POSTSERVICE KEY REQUIRED
PAT-151 Part B — classify item scores typical/above/below their Principia norm (via principia-connector). No fabricated norms: no-norm/unavailable are first-class.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/item-benchmarks" \
-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 '{}'survey-orchestrator.attraction.compare
POSTSERVICE KEY REQUIRED
Service-key gated reverse-exit↔exit SAME-ITEM comparison (the signature Attraction analytic): per-item + per-dimension in-vs-out deltas → advantage / disadvantage / parity over the canonical battery, min-N suppressed on both sides (PAT-185-FU-A). Performix debut consumer.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/attraction/compare" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.activation.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless CAMS / Activation analysis: per-segment NA% (activated÷eligible, min-N suppressed), additive 0–80 mean index, per-dimension means + the min-condition binding constraint, and a talent-value-ready activation reading (PAT-CAMS-INSTRUMENT — the CAMS instrument shared into the toolbox).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/activation/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.pay-satisfaction.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Pay Satisfaction analysis: per-segment facet means + overall + the weakest facet (the binding pay-sat complaint), all min-N suppressed, plus the per-item-per-wave item-mean trend when respondents carry waveIds (PAT-JFE-PAY-3).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-satisfaction/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.pay-fairness-perception.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Pay Fairness & Equity analysis: per-segment justice-dimension means + distributive referent breakdown (internal/external/market) + weakest dimension, min-N suppressed, item-mean trend, and the perceived-vs-actual equity read when an actual gap (calculus /oaxaca) is supplied (PAT-JFE-PAY-6).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-fairness-perception/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.pay-elements.importance
POSTSERVICE KEY REQUIRED
Service-key gated, method-agnostic pay-element importance aggregation: per-segment mean score + normalized importance share + rank per element (top element surfaced), min-N suppressed. Accepts MaxDiff utilities / conjoint part-worths / penny-allocation shares (estimation owned by preference-modeler); this is the comp-interpretation/segmentation layer (PAT-JFE-PAY-7).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-elements/importance" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.pay-program-scorecard
POSTSERVICE KEY REQUIRED
Service-key gated comp program-lever scorecard (the pay-survey capstone): rolls the M1–M7 fairness/equity + PSQ reads into per-lever 'is program X landing?' readings (0–100 + status + weakest segment + perceived-vs-actual flags) and player-ready InsightCards. Maps each survey signal to the comp lever it diagnoses (PAT-JFE-PAY-9).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/pay-program-scorecard" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.entrepreneurial-energy.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Entrepreneurial Energy analysis: per-segment EE% (energized÷eligible, min-N suppressed), additive 0–100 mean EE index, per-dimension means + the min-condition binding constraint, and a 0–100 → protective-P reading for the org-metabolism model (PAT-EE-INSTRUMENT — the EE vital sign on the CAMS machinery).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/entrepreneurial-energy/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.culture-of-innovation.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Culture of Innovation (innovation-CLIMATE) analysis: per-segment 0–100 climate index (min-N suppressed), per-dimension means across V/S/R/T/O (reverse-coded obstacle items flipped to high-is-healthy) + the min-condition binding constraint, and a 0–100 → protective-P reading for the org-metabolism model (PAT-COI-INSTRUMENT — the sibling of Entrepreneurial Energy; climate vs action).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/culture-of-innovation/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.leadership-mistake-risk.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Leadership Mistake-Risk analysis: per-LEADER (subjectId) risk index 0–100 (HIGH = dangerous, min-N suppressed) from direct-report feedback, per-dimension means + the dominant risk facet (HIGHEST dimension), and the → `M_mistake` ACUTE HAZARD MULTIPLIER (≥1) for the org-metabolism model (PAT-MISTAKE-RISK-INSTRUMENT — the inverse of the protective vital signs).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/leadership-mistake-risk/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'survey-orchestrator.activation-diversity.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Activation-Diversity (P8) analysis — the DERIVED protective vital sign. From activation-by-segment readings (the CAMS per-segment output shape) returns ONE org-level diversity index 0–100 = √(coverage × evenness): coverage = eligible-weighted share of the workforce in activated segments; evenness = normalized entropy of activation mass across segments. The diversity-of-activation component of the org-metabolism protective term `P` (West's `diversity_innovation → mortality (−)`; broad/decentralized activation is anti-fragile, concentrated activation is a fragile monoculture). Compute-only — derived, no survey battery (PAT-ACTIVATION-DIVERSITY-INSTRUMENT).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/survey-orchestrator/activation-diversity/compute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'network-analysis.connectivity.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless Connectivity vital-sign analysis (PAT-ONA-CONNECTIVITY). From an org collaboration edge list (treated undirected) returns ONE org-level connectivity index 0–100 = 0.5·reach + 0.25·cohesion + 0.25·robustness (reach = share of the org in the largest connected component; cohesion = average local clustering; robustness = 1 − articulation-points÷nodes), the binding sub-dimension, component + single-point-of-failure counts, and a 0–100 → protective-`P` reading for the org-metabolism model. West's `Scale` connectivity made measurable. Aggregate-only (no per-node / subgraph emitted — nothing to re-identify).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/network-analysis/connectivity" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'network-analysis.measures.compute
POSTSERVICE KEY REQUIRED
Service-key gated stateless ONA summary-measures analysis (PAT-ONA-MEASURES). Boils a collaboration network (treated undirected) down to the headline interpretable measures — reach, density, average distance, cohesion, broker-dependency (betweenness Gini → key-person risk), community structure (modularity), and per-attribute siloing (E-I index) + informal-vs-formal alignment — each benchmark-bearing + display-ready (viz.bullet-bar / viz.forest-plot). Product steer: leaders can't read node-link 'hairball' graphs, so this returns scalars + benchmarks + one-line interpretations, not a graph. Aggregate-only (no per-node export — nothing to re-identify). Inject peer/prior benchmarks via `benchmarks`; never fabricated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/network-analysis/measures" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'network-analysis.networks.upsert
POSTSERVICE KEY REQUIRED
UPSERT a network header + its edge list, tenant-scoped + idempotent (re-ingest replaces the edge set). Read it back with its connectivity at GET /networks/{networkId}.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/network-analysis/networks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.compare
POSTSERVICE KEY REQUIRED
Service-key gated rigorous two-group comparison (PAT-RM-SPOKE). From two de-identified numeric vectors: checks assumptions (normality via skew/kurtosis + QQ; homoscedasticity via Brown-Forsythe Levene), with test:"auto" picks the rigorous test (Mann-Whitney on severe non-normality, Welch on unequal variance, else pooled independent-samples t), runs it, computes Cohen's d, and returns the naïve-pooled-vs-applied 'remedy moment' diff plus catalog-linked assumption remedies. The toolbox owns the math (no Principia round-trip for compute); Principia supplies the cited evidence layer.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/compare" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.check-assumptions
POSTSERVICE KEY REQUIRED
Service-key gated severity-aware assumption checks (effect-size based, not bare p): normality (skew/kurtosis + QQ points) + homoscedasticity (Brown-Forsythe Levene) across groups, each with its catalog remedies + a proceed/apply_remedy recommendation.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/check-assumptions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.sample
POSTSERVICE KEY REQUIRED
Service-key gated seeded participant sample (PRN-101). From a de-identified frame [{id,stratum?}]: simple_random | stratified (proportional, largest-remainder); reproducible (same frame+seed → same draw). Returns the sample + per-stratum counts. Empty body → seeded example.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/sample" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.balance
POSTSERVICE KEY REQUIRED
Service-key gated covariate-balance diagnostics: per-covariate standardized mean difference + variance ratio + a severity-tagged verdict (balanced / over- / under-represented) between a group and a reference. The study-designer balance screen.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/balance" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.allocate
POSTSERVICE KEY REQUIRED
Service-key gated allocation to comparison arms (PRN-101): randomized | block_random (balanced at every block boundary). Reproducible. Returns the assignment + per-arm audit. Empty body → seeded example.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/allocate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'research-methods.recommend-design
POSTSERVICE KEY REQUIRED
Service-key gated design-recommendation engine (Cluster 1 P2, the 'shit dizzle'). From a question (construct relationship) + constraints (can-randomize / comparison-group / time-budget / inference-goal / cutoff / instrument / qualitative / synthesizing), returns a ranked, cited research-DESIGN recommendation over the 16 PRN-095 archetypes — each with X–O–R notation, typical analyses (linked to the test catalog), dominant validity threat, and the canon. With withPrior + a question, attaches the Principia effect-size prior (never fabricated). Empty body → seeded example.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/research-methods/recommend-design" \
-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 '{}'calculus.unit-linkage
POSTSERVICE KEY REQUIRED
Unit-linkage analysis (Gelade/Harter service-profit-chain): per-condition unit-level Pearson r + Fisher-z CI + significance + outcome-oriented direction, with optional segment cuts. Build-once for constraint × delivery / CSAT / churn.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/calculus/unit-linkage" \
-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 '{}'factor-models.program-portfolio
POSTSERVICE KEY REQUIRED
HR program-portfolio prioritization (PAT-177): rank HR programs by weighted outcome-linkage × stakeholder preference, flag low-driver / unreviewed spend as waste, recommend cull/keep/grow + reallocation of the recoverable pool. Service-key gated, stateless. DISTINCT from compensation waste (anycomp).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/program-portfolio" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'factor-models.program-portfolio.scenarios
POSTSERVICE KEY REQUIRED
HR program-budget scenario / optimizer (PAT-177-FU-C): over the prioritized portfolio + recoverable pool, generate a few budget-neutral reallocation scenarios (hold / targeted-cull / aggressive) each with a projected portfolioAlignment lift + moved spend, plus a PAT-171 exec narrative. Service-key gated, stateless. Sibling of the AnyComp scenario layer — HR programs, not pay.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/factor-models/program-portfolio/scenarios" \
-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 '{}'persona-library.generate-and-store
POSTSERVICE KEY REQUIRED
GTM-TOOLBOX-1 (G0). Generate buyer persona(s) from text/research via the live pa-site Bicycle generator, persist to the toolbox persona library, return the stored records. Service-key gated. MCP: persona-library.generate-and-store.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/persona-library/generate-and-store" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm-studio.create-artifact
POSTSERVICE KEY REQUIRED
GTM-TOOLBOX-1 (PAT-GTM-6). Persist any GTM tool artifact (positioning · message · segment · offer · channel · content · experiment · northstar) + append a tool_runs ledger entry. The shared artifact/commerce seam for the GTM tools. Service-key gated. MCP: gtm-studio.create-artifact.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/gtm-studio/artifacts" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.positioning.compose
POSTSERVICE KEY REQUIRED
T1 Positioning & Differentiation Wizard. Offer + buyer + competitive set → positioning statement + differentiation map + one-liner. Free: statement; paid: full map + variants. MCP: gtm.positioning.compose.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-positioning/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.message.build
POSTSERVICE KEY REQUIRED
T2 StoryBrand / Message Builder. Customer + problem + guide + plan + stakes → an SB7 brandscript (universal contract, verbatim) + website one-liner + elevator pitch. MCP: gtm.message.build.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-message/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.offer.compose
POSTSERVICE KEY REQUIRED
T4 Offer & Value-Prop Composer. Product + segment + price + pain → value-prop + offer structure (bonuses/risk-reversal/guarantee) + value-vs-price framing. Paid WTP carries a VoI bridge. MCP: gtm.offer.compose.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-offer/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.channel.plan
POSTSERVICE KEY REQUIRED
T5 Channel-Mix & Distribution Planner. Segment + budget + product type + attention → ranked channel shortlist + starter paid/owned/earned mix + start-here channel. MCP: gtm.channel.plan.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-channel/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.content.generate
POSTSERVICE KEY REQUIRED
T6 Content Engine. Buyer + positioning → content pillars + editorial calendar + drafted pieces. Free: pillars + 7-day starter; paid: 30-day + drafts. MCP: gtm.content.generate.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-content/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.experiment.design
POSTSERVICE KEY REQUIRED
T7 Growth-Experiment & Funnel Designer (flagship). AARRR stage that hurts + known stage rates → diagnosed bottleneck + ICE-ranked, falsifiable pass/fail experiment backlog, each with a value-of-information bridge. MCP: gtm.experiment.design.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-experiment/compose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'gtm.northstar.recommend
POSTSERVICE KEY REQUIRED
T8 North-Star Metric & Measurement Scorer. Business model + funnel → North Star metric + 3-4 input metrics + a flying-blind gap read (each gap paired with value-at-risk + cheapest close). MCP: gtm.northstar.recommend.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/surfaces/gtm-northstar/compose" \
-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 '{}'job-family-agent.level-equivalency
POSTSERVICE KEY REQUIRED
Map external comp-source levels to the canonical JobFrame universal level by pay (preferred) or ordinal signal — the stateless core of the survey mapper. Honest 3-state (confident/review/no_match); no_match abstains with a null canonicalLevel, never a fabricated equivalence (PAT-JFE-PAY-5 #1a).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/level-equivalency" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.source-level-mappings.propose
POSTSERVICE KEY REQUIRED
Survey-mapper persistence (#1b): propose source→canonical level mappings (runs the #1a equivalency per item) into the review queue (`source_level_mappings`, review_status=needs_review). Crosswalk-licensing enforced — a LICENSED source's mappings require a tenantId (tenant-segregated, never the shared canon). Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/source-level-mappings/propose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.source-level-mappings.query
POSTSERVICE KEY REQUIRED
Survey-mapper review queue (#1b): gated list of source→canonical level mappings filtered by tenant (+ global canon), source, and review status. Service-key gated (tenant-scoped licensed mappings are sensitive).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/source-level-mappings/query" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.source-level-mappings.review
POSTSERVICE KEY REQUIRED
Survey-mapper review-correct loop (#1b): confirm or reject a proposed source→canonical level mapping (optional canonical-level override on confirm). Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/source-level-mappings/:id/review" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.crosswalk-licensing.gate
POSTSERVICE KEY REQUIRED
The IP-clean crosswalk guard over HTTP: honest 3-state READ gate per source (open|licensed|not_licensed, never a fabricated match) + a WRITE cleanliness check over candidate crosswalk rows. Enforces the §33 storage rule (licensed survey-house structures stay tenant-segregated, never in the shared canon).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/crosswalk-licensing/gate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'job-family-agent.crosswalk.reverse
POSTSERVICE KEY REQUIRED
PAT-JFE-ENT-15 — reverse public-standards crosswalk: position a public-standard occupation (ESCO/Lightcast/SOC) onto OUR canon, returning candidate profiles on the shared OPEN anchor with a 3-state band. Service-key gated (positions external input). Honest not_mapped when no open anchor resolves.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/job-family-agent/crosswalk" \
-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 '{}'company-intelligence.ingest
POSTSERVICE KEY REQUIRED
Upsert catalog entries + companies + list memberships (service-key).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/company-intelligence/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'knowledge-graph.entities.upsert
POSTSERVICE KEY REQUIRED
Upsert entities — idempotent by (tenant,kind,slug) or (tenant,sourceNamespace,canonicalRef); reference nodes federate to canonical graphs and may not copy canonical-owned attributes. Service-key. MCP: knowledge-graph.entity.upsert.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/entities/upsert" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'knowledge-graph.relationships.upsert
POSTSERVICE KEY REQUIRED
Upsert typed directed edges between existing entities — idempotent by (tenant,type,from,to,effectiveFrom). Service-key. MCP: knowledge-graph.relationship.upsert.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/knowledge-graph/relationships/upsert" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'seo.keywords.research
POSTSERVICE KEY REQUIRED
Generate + upsert keyword candidates from a seed/niche/geo (honest — unvolumed until a provider/GSC is wired). Service-key. MCP: seo.keywords.research.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/seo/keywords/research" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'seo.sites.upsert
POSTSERVICE KEY REQUIRED
Register/upsert a tracked site + its pages (link a market-inventory Spot via spotId). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/seo/sites" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'seo.rankings.ingest
POSTSERVICE KEY REQUIRED
Append rank/GSC observations (batch, idempotent on site×keyword×day×source×device). GSC = measured truth; provider/scrape = estimated. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/seo/rankings/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'seo.audits.run
POSTSERVICE KEY REQUIRED
Run a technical/on-page audit on a registered site → structural findings + a 0-100 score. Service-key. MCP: seo.audit.run.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/seo/audits/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.mmm
POSTSERVICE KEY REQUIRED
MKTG-SCI-1. Marketing Mix Modeling: per-channel spend + outcome series → channel contribution, average + marginal ROI, bootstrap uncertainty intervals, and a marginal-ROI budget reallocation (honest abstain on thin data). Adstock + Hill saturation + ridge. MCP: marketing-analytics.mmm.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/mmm" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.attribution
POSTSERVICE KEY REQUIRED
MKTG-SCI-2. Multi-touch attribution: conversion journeys → credit by 7 methods (5 heuristics + Markov removal-effect + Shapley) with the recommended causal credit, bootstrap intervals, and an explicit last-touch-vs-causal divergence. Honest abstain on thin paths. MCP: marketing-analytics.attribution.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/attribution" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.properties.connect
POSTSERVICE KEY REQUIRED
Register/connect a GA4 or GSC property (stores a connection ref, never raw tokens). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/properties/connect" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.ingest.ga4
POSTSERVICE KEY REQUIRED
Ingest GA4 daily metric rollups (idempotent). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/ingest/ga4" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.ingest.gsc
POSTSERVICE KEY REQUIRED
Ingest GSC clicks/impressions/position rollups — the MEASURED truth source the SEO spoke reads. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/ingest/gsc" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'marketing-analytics.conversions.ingest
POSTSERVICE KEY REQUIRED
Mirror commerce-till / signals conversions (honest join, idempotent on sourceRef). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/marketing-analytics/conversions/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'competitive-intelligence.competitors.register
POSTSERVICE KEY REQUIRED
Register a competitor + monitoring profile (references the company-intelligence master). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/competitors/register" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'competitive-intelligence.observations.ingest
POSTSERVICE KEY REQUIRED
Append a capture's observations (SERP/positioning/hiring) from the connector. Append-only longitudinal store. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/observations/ingest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'competitive-intelligence.gaps.recompute
POSTSERVICE KEY REQUIRED
Recompute keyword gaps for a competitor set vs our own (self) ranked keywords. Service-key. MCP: competitive-intelligence.gaps.recompute.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/competitive-intelligence/gaps/recompute" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'ai-inbound.aeo.audit
POSTSERVICE KEY REQUIRED
Run a citability/AEO audit of a URL from its signals → score + findings + recommendations. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/aeo/audit" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'ai-inbound.answer-engine.probe-run
POSTSERVICE KEY REQUIRED
Store a 3-state citation probe batch (engine × query → cited/not-cited/unknown) → citedShare + unknownShare. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/answer-engine/probe-run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'ai-inbound.inbound.qualify
POSTSERVICE KEY REQUIRED
One conversational capture turn: classify intent, reply, emit a qualified lead (visitor text PII-redacted). Service-key. MCP: ai-inbound.inbound.qualify.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/ai-inbound/inbound/qualify" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'content-development.briefs.create
POSTSERVICE KEY REQUIRED
Create a content brief. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/briefs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'content-development.pieces.promote
POSTSERVICE KEY REQUIRED
Promote a brief → content piece + a first deterministic draft (the lifecycle's drafting step; T6/LLM grounding is the enhancement). Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/pieces" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'content-development.pieces.checks
POSTSERVICE KEY REQUIRED
Run the optimization gate (seo/aeo/editorial/fact-grounding/originality/readability) on a piece's current version → optimized if it passes. Service-key.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/pieces/:id/checks" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'content-development.pieces.publish
POSTSERVICE KEY REQUIRED
Publish an OPTIMIZED piece to a URL (HITL gate). Service-key. MCP: content-development.pieces.publish.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/content-development/pieces/:id/publish" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-benchmark.fairness-monitor.train
POSTSERVICE KEY REQUIRED
Single-model fairness monitor — TRAIN. Fits ONE logistic classifier with a fairness-aware loss (accuracyLoss + λ·disparity, demographic-parity or equalized-odds). No second/monitoring model, no pseudo-unbiased corpus (US11922435B2 design-around). Returns a FairnessModel (weights + bias).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-benchmark/fairness-monitor/train" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'wage-benchmark.fairness-monitor.audit
POSTSERVICE KEY REQUIRED
Single-model fairness monitor — AUDIT. Measures protected-class disparity post-hoc on an external held-out cohort of ONE model's decisions; never compares a second classifier (US11922435B2 design-around). Returns a DisparityReport with a boundary attestation.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/wage-benchmark/fairness-monitor/audit" \
-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 '{}'principia-connector.posterior.fuse
POSTSERVICE KEY REQUIRED
Fuse a published Principia prior with a new observation into a posterior (conjugate normal-normal on the Fisher-z scale). Three-state PosteriorResult (fused/none/error). Service-key gated; read-only compute.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/posterior" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.voi.analyze
POSTSERVICE KEY REQUIRED
Value of Information (EVPI/EVSI/optimal-N) for one prior + a loss function; surfaces a delegationHint when the heavier toolbox voi-framework is needed. Three-state VoiResult (ok/none/error). Service-key gated; read-only compute.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/voi" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.relationship-evidence.emit
POSTSERVICE KEY REQUIRED
Emit a primary-deployment construct→outcome effect size to Principia (PRN-065, write-key forwarded). AGGREGATE ONLY — the caller (reincarnation) gates consent + minimum cell size first. Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/relationship-evidence" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.methods.response-quality
POSTSERVICE KEY REQUIRED
Insufficient-effort (IER) ingestion gate (PRN-145, HO-059): scores a response set and returns ready-to-filter included/excluded/flagged respondent buckets to drop low-effort responses before metrics compute. Fail-OPEN (Principia down → nothing excluded, checked:false). Service-key gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/methods/response-quality" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.methods.assemble-battery
POSTSERVICE KEY REQUIRED
Soft-constraint battery assembly (PRN-142, HO-057): construct set + item pool + weights → assembled battery + per-constraint satisfaction (unmet[] flags thin-pool constraints, never a failure). Service-key gated; fail-soft 3-state.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/methods/assemble-battery" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.methods.local-validity
POSTSERVICE KEY REQUIRED
Local closed-loop validity (PRN-144, HO-073): per predictor, fuses the literature prior with the customer's own predictor→criterion correlation into a posterior LOCAL validity, then flags predictors to prune + flags validation decay (drift / too-small n). Re-implements no stats (Fisher-z stays upstream). REST-entity proxy; service-key gated; fail-soft 3-state. (Blueprint-Library-derived — internal use, never market.)
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/methods/local-validity" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'principia-connector.methods.validate-theory
POSTSERVICE KEY REQUIRED
Confirmatory theory validation (PRN-147, HO-068): theory (construct→construct relationships + priors) + a corpus of coded units → per-relationship verdict (supported/refined/contradicted/inconclusive/untested_no_prior) fusing the text-derived association with the published prior (Fisher-z). Absence is signal but coverage is reported. The differentiated capability over commodity theme/sentiment analysis. Service-key gated; fail-soft 3-state. Upstream deploy-pending (returns none/error until principia ships).
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/principia-connector/methods/validate-theory" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'glass-ox.plans.run
POSTSERVICE KEY REQUIRED
Execute a registered plan synchronously, persist its RunReport across the durable tables, and return the rehydrated report (halts honestly when an assertion fires). Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/glass-ox/plans/:slug/run" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.profiles.create
POSTSERVICE KEY REQUIRED
Create a tenant job profile from constructor decisions over the canon — preserves canon component ids + edit provenance, flags prose-only additions. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.profiles.action
POSTSERVICE KEY REQUIRED
Apply a lifecycle transition (submit_for_review/approve/reject/publish/archive). approve+publish gate on admin+ role; publish snapshots an immutable version. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles/:id/action" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.profiles.drift
POSTSERVICE KEY REQUIRED
Edit-drift → warn / re-match. Computes how far the tenant profile's components moved from their canon anchor; persists the flag + offers re-match candidates. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/profiles/:id/drift" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.overlays.create
POSTSERVICE KEY REQUIRED
Create an organizational overlay — a tenant-governed capability layer injected by level × function. Never part of global canon. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.overlays.adopt
POSTSERVICE KEY REQUIRED
PAT-JFE-OVERLAY-1: adopt an overlay (by key or instance id). Routes to governance + injects fragments into profiles by level × function, composing with the Focus overlay; returns the injection plan + rollout. Never mutates canon. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/adoptions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.overlays.adoptions.action
POSTSERVICE KEY REQUIRED
PAT-JFE-OVERLAY-1: set an adoption's status (active re-injects; suspended/retired withdraws injected fragments). Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/adoptions/:id/action" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.overlays.adoptions.inject
POSTSERVICE KEY REQUIRED
PAT-JFE-OVERLAY-1: run/re-run injection for an adoption — match fragments to profiles by level × function (composing with Focus), record provenance, refresh rollout. Idempotent. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/overlays/adoptions/:id/inject" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.associations.create
POSTSERVICE KEY REQUIRED
Associate a tenant profile to a position (workforce-planning) or person (org-graph). Best-effort verifies a position exists via workforce-planning. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/associations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.promotions.create
POSTSERVICE KEY REQUIRED
Propose a tenant change for promotion into the global canon. A RECORD ONLY — never mutates canon; promotion is a separate governed path. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/governance/promotions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.promotions.decide
POSTSERVICE KEY REQUIRED
Decide a canon-promotion proposal (under_review/accepted/rejected/withdrawn). Even 'accepted' only queues for the separate canon-edit pipeline — never mutates canon. Admin+ gated. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/governance/promotions/:id" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.comp.survey-levels.map
POSTSERVICE KEY REQUIRED
Map a comp survey's levels ↔ universal JobFrame levels, storing the mapping basis (pay_anchored/ordinal/title_only). Title-only + low-confidence → needs_review. Composes job-family-agent level-equivalency. Service-key-gated. PAT-JFE-ENT-5.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/survey-levels" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.comp.survey-levels.review
POSTSERVICE KEY REQUIRED
Human review of a low-confidence/high-impact equivalency (confirm/reject + optional universal-level override → basis=manual). Service-key-gated. PAT-JFE-ENT-5.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/survey-levels/:id/review" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.comp.survey-candidates.match
POSTSERVICE KEY REQUIRED
Match a tenant job (anchored to canon) → comp-survey candidates, flagging content-vs-pay-grade mismatch (job content level ≠ survey level's pay-implied level). Service-key-gated. PAT-JFE-ENT-5.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/survey-candidates" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.comp.disclosure-policies.upsert
POSTSERVICE KEY REQUIRED
Create/update a comp-data disclosure policy (what×conditions×who; one active per tenant; defaultMinN bounds every rule). Service-key-gated. PAT-JFE-ENT-12.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/disclosure-policies" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'enterprise-jobframe.comp.disclose
POSTSERVICE KEY REQUIRED
Decide, per artifact, whether a viewer may SEE a job's comp data — through the tenant's active disclosure policy + the min-N privacy floor (individual pay never exposed) + pay-transparency law (range mandated on). Composes org-graph, data-anonymizer, wage-compliance. Service-key-gated. PAT-JFE-ENT-12.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/enterprise-jobframe/comp/disclose" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'hris-mapper.datasets.create
POSTSERVICE KEY REQUIRED
Stage an upload (CSV text or parsed rows): field-type detection + RAW rows stored separately from any mapped projection (the we-do-the-homework audit). Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/datasets" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'hris-mapper.field-mappings.set
POSTSERVICE KEY REQUIRED
Confirm the source-column → canonical-field mapping for a dataset (idempotent replace). Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/field-mappings" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'hris-mapper.mapping-runs.create
POSTSERVICE KEY REQUIRED
Cluster (by code/title/grade) + predict family/focus/universal-level per cluster with field-level + record-level confidence + evidence + alternatives — ABSTAINING when no canon match clears the floor. Composes job-family-agent resolve-title (HTTP). Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/mapping-runs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'hris-mapper.decisions.create
POSTSERVICE KEY REQUIRED
Record a CLUSTER-level decision (accept/correct/reject/defer) — the bulk-correction grain (one decision per cluster, not per row). On correct the chosen canon ids are local truth. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/hris-mapper/decisions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'jobframe-analytics.analytics
POSTSERVICE KEY REQUIRED
PRD 20 People Analytics — run a confidence + 5-state-provenance-aware dashboard (job-architecture inventory / title proliferation / family-focus-level distribution / role drift / data trust / KSAO heatmap) over a tenant's JobFrame data. Every segment carries its provenance breakdown + a data-anonymizer min-N gate; returns a viz-catalog payload, never a bespoke chart. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/analytics" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'jobframe-analytics.gap-scan
POSTSERVICE KEY REQUIRED
PRD 21 — scan a tenant's profiles against a data objective (required fields × min provenance state × staleness) → the gaps that fail it, highest-impact first. The first stage of 'ask the fewest'. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/gap-scan" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'jobframe-analytics.campaigns.plan
POSTSERVICE KEY REQUIRED
PRD 21 Clarification Campaign Builder — plan + persist a campaign from an objective: gap-scan → sampling (exception/random/stratified/cluster/census) → route to the people most likely to know (org-graph) → info-gain order (reincarnation) → burden-capped tasks. ?previewOnly=true returns the respondent + burden estimate without persisting. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/campaigns" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOOLBOX_SERVICE_KEY" \
-d '{}'jobframe-analytics.responses.ingest
POSTSERVICE KEY REQUIRED
PRD 21 — ingest clarification responses → update the value's 5-state provenance (confirm → respondent_confirmed; correct → respondent_confirmed-new), route disagreements over human-strong or sensitive values to governance review. Corrections become governed evidence. Service-key-gated.
curl -sS -X POST "https://people-analytics-toolbox.vercel.app/api/spokes/jobframe-analytics/responses" \
-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.