Source-graded registry of organizational measurement: constructs, priors, instruments, citations.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <key>. A free researcher tier exists (PRN-186) — request a key through the contact route on https://peopleanalyst.com. Every tool is read-only against the registry except principia.competency.state.* and principia.posterior.update, which write to caller-scoped state only.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List CanonicalSurveyItem rows (PRN-050 item-level dedup spine). Each row aggregates one normalized item stem across N source instruments via source_items[].
List CanonicalSurveyItem rows (PRN-050 item-level dedup spine). Each row aggregates one normalized item stem across N source instruments via source_items[].
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Lookup one CanonicalSurveyItem by canonical_item_id (e.g., CITM_7350938cb42d). Unknown ids return found:false.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Keyword search over normalized_text + alternative_texts. Optional instrument_id filter narrows to canonical items whose source_items[] reference that instrument.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer | |
| instrument_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"instrument_id": {
"type": "string",
"minLength": 1
}
}
}Lookup a synthesized Bayesian prior by id OR (from_construct_id, predicate, to_construct_id). Empty until PRN-021 synthesis engine ships. PRN-N1013-M4: a prior's r pools observed and corrected contributing effects without a per-row marker yet (EFFECT_ESTIMATE_GLOSSARY.units_not_recorded, @people-analyst/measurement-core) — read it as basis-not-recorded, not as raw r.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| predicate | string | |
| sample_culture | string | |
| to_construct_id | string | |
| from_construct_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"predicate": {
"type": "string"
},
"sample_culture": {
"type": "string"
},
"to_construct_id": {
"type": "string"
},
"from_construct_id": {
"type": "string"
}
}
}Search canonical priors by from/predicate/to. Empty until PRN-021 synthesis engine ships.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| limit | integer | |
| predicate | string | |
| to_construct_id | string | |
| from_construct_id | string | |
| min_freshness_score | number | |
| min_informativeness | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"predicate": {
"type": "string"
},
"to_construct_id": {
"type": "string"
},
"from_construct_id": {
"type": "string"
},
"min_freshness_score": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"min_informativeness": {
"enum": [
"uninformative",
"weakly_informative",
"informative",
"highly_informative"
],
"type": "string"
}
}
}Lookup one citation by id OR doi. Scans both id-keyed and doi-keyed candidates.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| doi | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"doi": {
"type": "string"
}
}
}Keyword search over title + apa_reference + doi + authors.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
}
}
}List canonical constructs (resolved CanonicalVariable rows). Supports limit/offset, engagement_family_only, and abstraction_level (PRN-271).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer | |
| abstraction_level | string | |
| engagement_family_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"abstraction_level": {
"enum": [
"broad_trait",
"facet",
"competency",
"condition",
"process",
"composite"
],
"type": "string"
},
"engagement_family_only": {
"type": "boolean"
}
}
}Lookup one canonical construct by id (a canonical variable_id, e.g. VAR_000376). Unknown ids return found:false (soft validation).
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Return instruments that measure a given construct, ranked by composite score (reliability + validity + literature usage + recency). Optional filters: min_reliability, cross_cultural_only, length_lte. Read-only — no mutation (curator-policy D4).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| length_lte | integer | |
| construct_id* | string | |
| min_reliability | number | |
| cross_cultural_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"construct_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"length_lte": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"construct_id": {
"type": "string",
"minLength": 1
},
"min_reliability": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"cross_cultural_only": {
"type": "boolean"
}
}
}Resolve a source-side construct {name, definition?, variable_code?} against the canonical store. READ-ONLY — does not mutate. Uses meta-factory's matcher ([email protected] / [email protected] / [email protected]).
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| definition | string | |
| variable_code | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"definition": {
"type": "string"
},
"variable_code": {
"type": "string"
}
}
}Keyword search over construct name + definition + alternative_names + variable_codes. Argument is `q` (not `query`).
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
}
}
}Look up one MethodologyCritique by `critique_id`. Returns `{matches, total, note?}` — array-shaped for parity with equivalences. Matches list contains 0 or 1 element.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}Search MethodologyCritique rows by composite filter (`subject_id`, `subject_type`, `critique_type`, `severity`). All filters AND together; any subset of the four is valid. Read-only (curator-policy D4).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| severity | string | |
| subject_id | string | |
| subject_type | string | |
| critique_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"severity": {
"enum": [
"minor",
"moderate",
"major",
"fatal"
],
"type": "string"
},
"subject_id": {
"type": "string"
},
"subject_type": {
"enum": [
"instrument",
"construct",
"model",
"theoretical_model",
"effect_size",
"citation"
],
"type": "string"
},
"critique_type": {
"enum": [
"construct_validity",
"method_bias",
"sampling",
"scoring",
"reliability",
"applicability",
"factor_structure",
"common_method_variance",
"other"
],
"type": "string"
}
}
}Search EffectSize rows by from/to/statistic_type. Each returned value's observed/corrected basis is named per EFFECT_ESTIMATE_GLOSSARY (@people-analyst/measurement-core) — PRN-N1013-M4; a row with no typed estimates block reads 'basis not recorded', never a bare statistic symbol.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| limit | integer | |
| statistic_type | string | |
| to_construct_id | string | |
| from_construct_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string"
},
"from": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"statistic_type": {
"type": "string"
},
"to_construct_id": {
"type": "string"
},
"from_construct_id": {
"type": "string"
}
}
}Look up InstrumentEquivalence rows by `id` OR by the canonical tuple (`construct_id` + `instrument_a` + `instrument_b` [+ optional `mapping_method`]). Pair ordering is normalized server-side so (Q12, UWES-9) and (UWES-9, Q12) resolve to the same row. Returns `{matches, total, note?}` — array-shaped because a (construct, pair) can carry multiple methods.
| Argument | Type | Description |
|---|---|---|
| id | string | |
| construct_id | string | |
| instrument_a | string | |
| instrument_b | string | |
| mapping_method | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "string"
},
"construct_id": {
"type": "string"
},
"instrument_a": {
"type": "string"
},
"instrument_b": {
"type": "string"
},
"mapping_method": {
"enum": [
"linear",
"equipercentile",
"irt_concordance",
"linking_study",
"expert_judgment"
],
"type": "string"
}
}
}Search InstrumentEquivalence rows by `construct_id` and/or `instrument_id`. `instrument_id` matches either side of the pair. Optional `mapping_method` filter.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| construct_id | string | |
| instrument_id | string | |
| mapping_method | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"construct_id": {
"type": "string"
},
"instrument_id": {
"type": "string"
},
"mapping_method": {
"enum": [
"linear",
"equipercentile",
"irt_concordance",
"linking_study",
"expert_judgment"
],
"type": "string"
}
}
}Return Evidence[] edges that name a given entity_id as the claim subject.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| entity_id* | string | |
| subject_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"entity_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 1000,
"exclusiveMinimum": 0
},
"entity_id": {
"type": "string",
"minLength": 1
},
"subject_type": {
"enum": [
"construct",
"instrument",
"model",
"effect_size"
],
"type": "string"
}
}
}Retrieve the full causal chain from a construct, condition, or problem to interventions, with evidence grades at each hop. problem_id accepts pf.* addresses from the problemframe-2026-v1 frozen registry (cert d0770859) and resolves construct mappings via the MF-711 pf→construct join (landed 2026-09-11); an address with no join coverage yet resolves the problem frame with an honestly empty linked_constructs[], not an error. condition_id accepts bicycle-guide's minted cond_<slug> ConditionFrame ids and resolves via the PRN-281 crosswalk (landed 2026-09-11); a condition with no construct match yet resolves honestly empty the same way. All three entry points are fully resolved today — no path is gated.
| Argument | Type | Description |
|---|---|---|
| problem_id | string | |
| condition_id | string | |
| construct_id | string | |
| limit_priors | integer | |
| limit_interventions | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"problem_id": {
"type": "string"
},
"condition_id": {
"type": "string"
},
"construct_id": {
"type": "string"
},
"limit_priors": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"limit_interventions": {
"type": "integer",
"maximum": 50,
"minimum": 1
}
}
}Search owned, OA-sourced, attributed, stance-classified evidence quotes for a construct→construct relationship (from/to), or any statement naming a single construct. Filters: stance, displayable_only. The display layer for the metric profile page + book.
| Argument | Type | Description |
|---|---|---|
| to | string | |
| from | string | |
| limit | integer | |
| stance | string | |
| construct | string | |
| min_grade | string | |
| displayable_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"minLength": 1
},
"from": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"stance": {
"enum": [
"supports",
"disputes"
],
"type": "string"
},
"construct": {
"type": "string",
"minLength": 1
},
"min_grade": {
"enum": [
"A",
"B",
"C",
"D"
],
"type": "string"
},
"displayable_only": {
"type": "boolean"
}
}
}List InstrumentCard rows. Optional construct_id filter narrows to instruments covering a given construct.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| owned | boolean | |
| offset | integer | |
| license | string | |
| construct_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"owned": {
"type": "boolean"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"license": {
"type": "string"
},
"construct_id": {
"type": "string"
}
}
}Lookup one instrument by instrument_id. Unknown ids return found:false.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Keyword search over instrument_name + developer + constructs_covered.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
}
}
}Look up one Intervention by `intervention_id`. Returns `{matches, total, note?}` — array-shaped for parity with critiques + equivalences. Matches list contains 0 or 1 element.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Search Intervention rows by composite filter (`construct_id` — matches when `targets_constructs[]` includes the id; `problem_id` — a ProblemFrame pf.* address, resolved via the MF-711 pf→construct join to one or more construct ids and then matched the same way as `construct_id`; `modality` — matches when `delivery_modality[]` includes the modality; `cost_band` — exact match on `typical_cost_band`). All filters AND together; any subset is valid. Read-only (curator-policy D4).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| modality | string | |
| cost_band | string | |
| problem_id | string | |
| construct_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"modality": {
"enum": [
"training",
"coaching",
"tech",
"policy",
"structural",
"feedback",
"incentive",
"process_redesign",
"other"
],
"type": "string"
},
"cost_band": {
"enum": [
"low",
"medium",
"high",
"enterprise"
],
"type": "string"
},
"problem_id": {
"type": "string"
},
"construct_id": {
"type": "string"
}
}
}Lookup one survey item by item_id. SPEC §6/Q4 enforced: items_license != public_domain|open returns status:'restricted'.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Search items by text. Restricted items (proprietary instruments) are returned with text fields stripped; restricted_count surfaces how many.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
}
}
}List Measure rows. entity_kind filter selects scientific_construct vs operational_metric.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer | |
| entity_kind | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"entity_kind": {
"enum": [
"scientific_construct",
"operational_metric"
],
"type": "string"
}
}
}Lookup one Measure by measure_id. Unknown ids return found:false.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}List Model rows (theoretical / structural frameworks).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Lookup one Model by model_id. Unknown ids return found:false.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Keyword search over model_name + description.
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
}
}
}List canonical theoretical models (JD-R, COR, SDT, AET, JCM, Goal-Setting, Equity, Two-Factor, etc.). Sorted by foundational publication year. Read-only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Look up one CanonicalTheoreticalModel by id (e.g., theory.jd_r). Returns the theory's canonical constructs, canonical relations (with predicates), descendant per-study models, and foundational citations.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
}
}
}Search theoretical models by keyword over name/summary/constructs. Optional filters: invokes_construct_id (theories that invoke a specific construct), field_domain (classification axis).
| Argument | Type | Description |
|---|---|---|
| q* | string | |
| limit | integer | |
| field_domain | string | |
| invokes_construct_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"field_domain": {
"type": "string"
},
"invokes_construct_id": {
"type": "string"
}
}
}