Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PSYCHOMETRICS_LOG_LEVELNoControls the logging level for the MCP server. Valid values include CRITICAL, WARNING, INFO, etc. An unrecognised value falls back to WARNING and logs a notice.WARNING

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
describe_datasetA

Load a response file and describe its shape, blanks and subgroups.

Call this FIRST on any unfamiliar file. It reports counts, the missing-data breakdown (omitted versus not-reached), and subgroup sizes, and it reproduces none of the responses themselves -- so it is safe to summarise in a conversation. Use it to confirm the layout, scoring and column names are right before running an analysis, and to check subgroup sizes before asking for DIF.

Relay the diagnostics warnings verbatim; they describe how blanks were interpreted, which changes every downstream statistic.

compute_classical_statsA

Classical item analysis: difficulty, discrimination and form reliability.

Returns per item: p-value with a Wilson 95% interval, corrected point-biserial (item versus rest score -- the discrimination index to use), uncorrected point-biserial, biserial, the 27% upper-lower D index, and review flags. Returns per form: mean and SD of total score, Cronbach's alpha (identical to KR-20 here by construction), the standard error of measurement, and alpha-if-item-deleted.

REFUSES below 20 examinees and warns below 100.

Read the flags as review triggers, not verdicts. In particular, a negative corrected point-biserial on an item of ordinary difficulty usually means the item is mis-keyed rather than that it is a bad item -- the diagnostics say so explicitly when it occurs, and that warning must be relayed.

compute_local_dependenceA

Screen every item pair for local dependence (Yen's Q3) and flag entangled pairs.

Answers a question compute_classical_stats structurally cannot: whether two items are measuring the same thing twice. Q3 is the correlation between two items' residuals once the common factor is removed, so it isolates covariance that the trait does not explain -- one item cueing the answer to another, a shared stimulus, or near-duplicate content. Every item on a form can pass every per-item check and the form can post a healthy alpha while a fifth of its items are entangled; that is the case for running this at all.

Returns the flagged pairs, each with its Q3, its centred Q3*, how many SDs from the form mean it sits, and a flag object, plus the whole Q3 distribution the pairs were judged against -- a flag list without its reference distribution cannot be read. summary.hub_items names items that appear in three or more flagged pairs, reported separately because a hub is one item to fix rather than several pairs to triage.

REFUSES below 5 items or 100 examinees, and refuses with no_estimable_pairs when every pair involves a zero-variance item -- a distinct refusal because more examinees would not fix it.

Two things this deliberately is not. It is not an enemy-item check: overlapping content is a content-similarity question, and Q3 supplies only the statistical half, so a flagged pair is a pair to READ, not a pair to cut. And it is not inference -- there are no p-values here, for the reason given in method. Do not present a flagged pair as a significant finding.

flag_difA

Screen every item for differential item functioning between subgroups.

Runs three methods per item, deliberately not redundant:

  • Mantel-Haenszel with ETS A/B/C classification -- the operational standard, but it detects UNIFORM DIF ONLY.

  • Standardised p-difference (Dorans & Kulick) -- same finding on the proportion-correct metric, which panels read without translation.

  • Logistic regression -- adds the group-by-ability interaction, so it catches NON-UNIFORM DIF that Mantel-Haenszel is structurally blind to. Items flagged by logistic but category A under MH are called out separately; an MH-only screen would have missed them.

Matching is on observed number-correct score. purify=True (default) removes flagged items from the matching criterion and retests; note that difR in R defaults to no purification, so numbers differ from a naive difR comparison.

REFUSES when the smaller group is under 50, and warns under 200 because the ETS A/B/C bands were calibrated above that.

CRITICAL FOR REPORTING: a DIF flag is not a finding of bias. It means the item behaves differently for two groups of equal overall proficiency, which routes the item to human content review to decide whether there is a construct-irrelevant reason. Never describe flagged items as biased items, and never report the flag count as a count of biased items. Use the Benjamini-Hochberg adjusted p-values, not the raw ones -- screening a 65-item form is 65 simultaneous tests.

run_standard_settingA

Aggregate standard-setting panel judgements into a cut score with its defensibility record.

Methods: "angoff" (ratings are probabilities that a minimally competent candidate answers each item correctly), "yes_no_angoff" (0/1 judgements), "bookmark" (page placements on an Ordered Item Booklet).

Panel ratings may be passed inline as a panelists-by-items array, or read from a CSV via ratings_file (one row per panelist, one column per item, no header). Inline is acceptable here because panel ratings are aggregate expert judgements, not candidate records.

THE CUT SCORE IS NOT THE OUTPUT. The output is the cut plus its standard error, the panel's ICC agreement, per-panelist severity and noise flags, items with no panel consensus, and round-over-round spread. Report the standard error whenever you report the cut: differences smaller than about two standard errors are inside sampling noise, and panels routinely argue over gaps well inside that.

SUPPLY empirical_p_values WHENEVER YOU HAVE THEM. Content experts systematically overestimate how easy items are, because they know the answer. The reality check catches a wholesale miscalibration that would otherwise produce a cut implying an unusable pass rate, and identifies the specific items to re-discuss.

bookmark requires ordered_item_thetas from an IRT calibration; this version of the package does not fit IRT models, and classical item difficulty is not a substitute for them.

REFUSES below 3 panelists (the cut's standard error is not interpretable) and warns below 8. Also refuses ratings outside [0, 1] rather than guessing that they are percentages.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JulieElkinsAWS/psychometrics-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server