Skip to main content
Glama

Hiring Fairness & Selection ROI

Server Details

Detect hiring adverse impact and estimate whether a selection method is worth its cost.

Ownership verified
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

A4/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness4/5

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 tools
hiring_fairnessHiring Fairness & Selection ROIA
Read-only
Inspect

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.

NameRequiredDescriptionDefault
alphaNo
currencyNoUSD
validityNoKnown validity (correlation of the method with job success), if no score data.
base_rateNoShare of people who succeed in the job without the method.
candidatesNoAlternative 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_fifthsNo
group_labelNoe.g. gender, race, caste, age band.group
stage_countsNoGroup-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_yearsNo
annual_salaryNoUsed for the value spread (40% of salary) if sd_performance_value is absent.
hires_per_yearNo
min_group_sizeNo
score_outcomesNoAnonymous pairs for a validity study: score, outcome (optional), group (optional). No identifiers.
currency_symbolNo
reference_groupNoCompare against this group (default: highest rate).
selection_ratioNoShare of applicants hired (e.g. 0.2).
current_validityNoValidity of the method it replaces (0 = random / none).
min_cell_displayNoCounts below this are hidden in the output (privacy).
success_thresholdNoOutcome value that counts as success.
cost_per_applicantNo
sd_performance_valueNoMoney value of one SD of job performance per year.
range_restriction_ratioNoSD of scores among applicants / SD among hires (corrects r).
current_cost_per_applicantNo

Output Schema

NameRequiredDescription
alertsNo
statusYes1 = ok, 0 = nothing could be analysed
messageNo
metadataYes
validityNo
decisionsYesPlain-language cards, priority order. Relay these first.
legal_noteYes
assumptionsNo
selection_roiNo
adverse_impactNo
cutoff_analysisNo
data_quality_reportNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)A
Read-only
Inspect

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.

NameRequiredDescriptionDefault
paramsNoOther inputs exactly as hiring_fairness takes them (selection_ratio, annual_salary, reference_group ...).
data_kindNoWhat the file holds: one row per candidate, counts, or score pairs.candidates
data_pathNoFile in your sandbox (CSV/TSV/JSON).

Output Schema

NameRequiredDescription
notesNo
scriptYes
languageNo
requiresNo
data_kindNo
data_pathNo
writes_fileNo
instructionsYes
engine_versionYes
scipy_requiredNo
data_requirementsNo
network_access_requiredNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updates
    • First observedhiring_fairness
    • First observedhiring_fairness_get_engine

Publisher details

Operator
Saifs.ai · Publisher source
Vendor relationship
Not applicable
Documentation
Not applicable
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Eval-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.
    9
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Give 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.
    2
    10
    52 PyPI
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.