Hiring Fairness & Selection ROI
Server Details
Detect hiring adverse impact and estimate whether a selection method is worth its cost.
- Status
- Healthy
- Uptime
- 90.7% over 22 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- Saify-Technologies/saifs-ai-mcps-docs
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
The two tools have clearly separate roles: hiring_fairness runs the analysis directly, while hiring_fairness_get_engine is an explicit escape hatch for >5,000-row files or sandboxed ATS exports. The descriptions spell out the boundary condition, so an agent can select correctly without guessing.
Both names share the consistent 'hiring_fairness' prefix, making them easy to group. The main tool uses a bare noun form while the second appends a 'get_engine' verb_noun pattern, a minor deviation but still readable and predictable.
Only two tools are exposed, and the primary one bundles a large amount of analysis into a single call. It is defensible for such a narrow domain, but the surface is thin and the second tool is a fallback rather than an independent capability.
The surface covers group-level fairness (EEOC 4/5 rule, significance testing), funnel analysis, score/outcome validity, cutoff setting, and ROI in one comprehensive tool, plus a large-file path. Minor gaps exist (e.g. no standalone result retrieval or multi-file orchestration), but core workflows have no dead ends.
Available Tools
2 toolshiring_fairnessHiring Fairness & Selection ROIARead-onlyInspect
Group-level fairness and value analysis of a hiring process. From counts per stage and group (applicants, selected; optionally per job/location) it returns: selection rate and impact ratio of every group vs the highest-rate group at every stage (EEOC 4/5 rule), whether each gap is larger than chance (Fisher's exact test for small groups, two-proportion z-test otherwise), extra selections needed to reach the line, the end-to-end funnel, and a like-for-like check across jobs (Mantel-Haenszel, flags Simpson's paradox). From anonymous score/outcome pairs: whether the test predicts success (correlation with 95% range, range-restriction correction), expected success rate of hires (Taylor-Russell), whether it under-predicts a group (Cleary), a fair pass mark, and the dollar value net of cost (Brogden-Cronbach-Gleser) with break-even. Decision cards first: REVIEW THIS STAGE, COMPARE LIKE WITH LIKE, SMALL GAPS ADD UP, WATCH, GET LEGAL REVIEW, TEST PREDICTS / DOES NOT PREDICT, TEST UNDERRATES A GROUP, SET CUTOFF, WORTH THE COST ... Never scores or ranks individuals. Analysis, not legal advice. Up to 5,000 rows; larger files: hiring_fairness_get_engine.
| Name | Required | Description | Default |
|---|---|---|---|
| alpha | No | ||
| currency | No | USD | |
| validity | No | Known validity (correlation of the method with job success), if no score data. | |
| base_rate | No | Share of people who succeed in the job without the method. | |
| candidates | No | Alternative to stage_counts: one row per candidate per stage with ONLY stage, group, selected (yes/no) and optional stratum. Aggregated at once; never send names, emails or ids. | |
| four_fifths | No | ||
| group_label | No | e.g. gender, race, caste, age band. | group |
| stage_counts | No | Group-level counts, one row per stage x group (x stratum): stage, group, applicants, selected, optional stratum (job/department/location). Stages in funnel order. Common ATS headers (Gender, Applied, Hired ...) are understood. | |
| tenure_years | No | ||
| annual_salary | No | Used for the value spread (40% of salary) if sd_performance_value is absent. | |
| hires_per_year | No | ||
| min_group_size | No | ||
| score_outcomes | No | Anonymous pairs for a validity study: score, outcome (optional), group (optional). No identifiers. | |
| currency_symbol | No | ||
| reference_group | No | Compare against this group (default: highest rate). | |
| selection_ratio | No | Share of applicants hired (e.g. 0.2). | |
| current_validity | No | Validity of the method it replaces (0 = random / none). | |
| min_cell_display | No | Counts below this are hidden in the output (privacy). | |
| success_threshold | No | Outcome value that counts as success. | |
| cost_per_applicant | No | ||
| sd_performance_value | No | Money value of one SD of job performance per year. | |
| range_restriction_ratio | No | SD of scores among applicants / SD among hires (corrects r). | |
| current_cost_per_applicant | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| alerts | No | |
| status | Yes | 1 = ok, 0 = nothing could be analysed |
| message | No | |
| metadata | Yes | |
| validity | No | |
| decisions | Yes | Plain-language cards, priority order. Relay these first. |
| legal_note | Yes | |
| assumptions | No | |
| selection_roi | No | |
| adverse_impact | No | |
| cutoff_analysis | No | |
| data_quality_report | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false. The description adds meaningful behavior beyond that: it will never score or rank individuals, it is analysis not legal advice, and counts below min_cell_display are suppressed for privacy. These are real operational constraints an agent could not derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and constraints are front-loaded, but the long comma-spliced list of decision-card strings ('REVIEW THIS STAGE, COMPARE LIKE WITH LIKE, SMALL GAPS ADD UP ...') is verbose and largely restates output already covered by the output schema. Sentence length is high and structure is dense rather than scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 23-parameter, complex analytic tool the description covers the analytic modes, the row cap, and the sibling fallback, which is close to complete given an output schema exists to explain return values. It is missing practical usage detail for the many optional inputs, but nothing critical for correct invocation is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 23 parameters and 61% schema description coverage, the schema carries most of the semantic load and the description adds essentially nothing about specific parameters (it never explains alpha, four_fifths, reference_group, currency, etc.). The description's narrative maps conceptually onto the two input modes but does not clarify parameter behavior; baseline 3 for mid schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific analytic product ('Group-level fairness and value analysis of a hiring process') and enumerates the concrete outputs (impact ratio, Fisher's exact test, Taylor-Russell, Brogden-Cronbach-Gleser). It also distinguishes itself from the sibling by stating the 5,000-row cap and redirecting to hiring_fairness_get_engine. It stops short of a crisp verb+resource framing, reading more like a feature list than a purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only explicit routing guidance is 'Up to 5,000 rows; larger files: hiring_fairness_get_engine', which correctly names the alternative and its trigger condition. There is no guidance on when to pass stage_counts vs candidates vs score_outcomes, or which analysis mode applies in which scenario, so the rest of the usage is inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hiring_fairness_get_engineHiring Fairness — Get Engine Script (large files)ARead-onlyInspect
For hiring files over 5,000 rows, or any ATS export already in your code sandbox. Returns a complete numpy-only Python script with the same engine as hiring_fairness; it reads the file, aggregates candidate rows to group counts on the spot (identifying columns are dropped), prints the decision cards and writes the group-level result to hiring_fairness_result.json. Pass other inputs (selection_ratio, annual_salary, reference_group ...) in params. Group-level output only: never scores or ranks individuals. No candidate data reaches this server on this path.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Other inputs exactly as hiring_fairness takes them (selection_ratio, annual_salary, reference_group ...). | |
| data_kind | No | What the file holds: one row per candidate, counts, or score pairs. | candidates |
| data_path | No | File in your sandbox (CSV/TSV/JSON). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| script | Yes | |
| language | No | |
| requires | No | |
| data_kind | No | |
| data_path | No | |
| writes_file | No | |
| instructions | Yes | |
| engine_version | Yes | |
| scipy_required | No | |
| data_requirements | No | |
| network_access_required | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: it explains that the returned script reads the file, aggregates rows to group counts, drops identifying columns, prints decision cards, writes hiring_fairness_result.json, and never sends candidate data to the server. It also reinforces the group-level-only constraint and no individual scoring or ranking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the large-file and sandbox use case, then moves efficiently through return behavior, parameter passing, and privacy constraints. Every sentence adds operational value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, annotations, output schema, and fully documented parameters, the description is complete enough for an agent to select and invoke it correctly. It covers the large-file routing, script behavior, group-level output constraint, and data privacy handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter baseline is 3, but the description adds meaning by explaining that selection_ratio, annual_salary, reference_group, and other inputs are passed through in params exactly as hiring_fairness takes them. It also clarifies that data_path is a CSV/TSV/JSON file in the sandbox.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action, returning a complete numpy-only Python script, and clearly scopes it to hiring files over 5,000 rows or ATS exports already in the sandbox. It also distinguishes this path from the sibling hiring_fairness tool by explaining it uses the same engine but handles large local files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage condition: files over 5,000 rows or ATS exports already in the code sandbox. It does not explicitly say to use hiring_fairness for smaller files, but the threshold and sibling reference make the intended routing largely clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
hiring_fairness - First observed
hiring_fairness_get_engine
Publisher details
- Operator
- Saifs.ai · Publisher source
- Operator website
- https://saifs.ai/ · Publisher source
- Vendor relationship
- Not applicable
- Documentation
- Not applicable
- Trust center
- Not applicable
- Restrictions
- Not applicable
Related MCP Connectors
Analyse tests for item quality, true ability, reliability and learner mastery.
Exact A/B test sample size, duration, z-test, chi-square, Fisher-Freeman-Halton and peeking risk.
Causal analytics: ask a business question, get a deterministic causal answer and charts.
People analytics + compensation as MCP tools: JobFrame, pay modeling, wage compliance, HR metrics
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables agents to calculate how many evaluation test cases are needed to trust model comparisons, find the smallest detectable accuracy gap, and assess paired or unpaired results using McNemar and two-proportion statistical tests.4MIT
- AlicenseAqualityBmaintenanceThis server assists with A/B testing by calculating required sample sizes and necessary test durations. It provides a suite of significance tests, including z-test, chi-square, and Fisher exact methods, while evaluating the risks of premature peeking.5MIT
- AlicenseAqualityCmaintenanceEval-integrity statistics for AI benchmark claims — multiple-testing correction, power/MDE for model gaps, judge-bias and leaderboard-rank checks. Catches a benchmark number that won't survive a second look.9MIT
- AlicenseAqualityAmaintenanceGive AI agents 10 offline tools for market observations, repeated headlines, forecast evaluation, correlation risk and statistical checks. Preserve source clocks, missing data and stated assumptions. Python, CLI and MCP share the same zero-dependency core; no feed collection or trade execution.21052 PyPIMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.