is_fria_required
Assess whether a Fundamental Rights Impact Assessment (FRIA) is mandatory under EU AI Act Article 27, based on organisation type, public law status, and service context.
Instructions
Determine if a FRIA is mandatory under EU AI Act Article 27 for this deployment.
Args: organisation_type: One of public-authority / private-operator / SaaS-vendor / individual. is_public_law_body: True if the organisation is a body governed by Member State or EU public law. provides_public_service: True if the organisation provides services in a public-service context (recruitment for public sector, education, healthcare, social services, etc.). annex_iii_categories: List of Annex III high-risk categories the system falls under. E.g., ["employment-and-workforce", "education-and-vocational-training", "credit-scoring"].
Returns: Decision + rationale + Article 27 reference.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| organisation_type | Yes | ||
| is_public_law_body | No | ||
| provides_public_service | No | ||
| annex_iii_categories | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- meok_fria_generator/server.py:124-184 (handler)The `is_fria_required` tool function (decorated with @mcp.tool()). It determines if a FRIA is mandatory under EU AI Act Article 27 by evaluating organisation type, public-law body status, public-service provision, and Annex III high-risk categories. Returns a decision with rationale, regulatory basis, deadline, and review obligation.
@mcp.tool() def is_fria_required( organisation_type: str, is_public_law_body: bool = False, provides_public_service: bool = False, annex_iii_categories: list[str] | None = None, ) -> dict[str, Any]: """Determine if a FRIA is mandatory under EU AI Act Article 27 for this deployment. Args: organisation_type: One of public-authority / private-operator / SaaS-vendor / individual. is_public_law_body: True if the organisation is a body governed by Member State or EU public law. provides_public_service: True if the organisation provides services in a public-service context (recruitment for public sector, education, healthcare, social services, etc.). annex_iii_categories: List of Annex III high-risk categories the system falls under. E.g., ["employment-and-workforce", "education-and-vocational-training", "credit-scoring"]. Returns: Decision + rationale + Article 27 reference. """ annex_iii_categories = annex_iii_categories or [] # Specifically mandatory categories per Article 27(1) always_mandatory = {"credit-scoring", "life-insurance-pricing", "health-insurance-pricing"} has_always_mandatory = bool(set(annex_iii_categories) & always_mandatory) is_mandatory = False rationale = [] if is_public_law_body: is_mandatory = True rationale.append("Public-law body — Article 27(1) mandates FRIA for all bodies governed by public law") if provides_public_service: is_mandatory = True rationale.append( "Provides public service — Article 27(1) extends FRIA obligation to private operators " "providing public services" ) if has_always_mandatory: is_mandatory = True cats = sorted(set(annex_iii_categories) & always_mandatory) rationale.append( f"Always-mandatory category triggered: {cats} — Article 27(1) requires FRIA " f"regardless of organisation type for credit/insurance pricing" ) if not is_mandatory and annex_iii_categories: rationale.append( "Not strictly mandatory under Art. 27, but Annex III high-risk system — STRONGLY " "RECOMMENDED to conduct a FRIA-equivalent assessment as best practice" ) return { "fria_mandatory": is_mandatory, "rationale": rationale, "annex_iii_categories": annex_iii_categories, "regulatory_basis": "EU AI Act Reg (EU) 2024/1689 Article 27", "deadline": "FRIA must be completed BEFORE first deployment of the high-risk AI system", "review_obligation": "Article 27(2) — update FRIA when deployer's processes, risks, or " "circumstances change materially", } - meok_fria_generator/server.py:124-124 (registration)Tool registration via the @mcp.tool() decorator on the `is_fria_required` function. The FastMCP instance `mcp` is created on line 25 and the decorator registers the function as an MCP tool.
@mcp.tool() - meok_fria_generator/server.py:94-101 (helper)FRIA_MANDATORY_TRIGGERS constant used as reference data for when FRIA is mandatory per Article 27(1). This helper data informs the logic of is_fria_required.
# When FRIA is mandatory (per Article 27(1)) FRIA_MANDATORY_TRIGGERS = [ "Body governed by public law (Member State or EU institution)", "Private operator providing public services (e.g., recruitment for public-sector roles, education, healthcare)", "Deploying a high-risk AI system listed in Annex III", "Specifically: credit scoring (Annex III §5(b))", "Specifically: life/health insurance pricing (Annex III §5(c))", ] - Docstring and type hints for is_fria_required serving as input/output schema. Parameters: organisation_type (str), is_public_law_body (bool), provides_public_service (bool), annex_iii_categories (list[str] | None). Returns dict[str, Any] with decision + rationale.
"""Determine if a FRIA is mandatory under EU AI Act Article 27 for this deployment. Args: organisation_type: One of public-authority / private-operator / SaaS-vendor / individual. is_public_law_body: True if the organisation is a body governed by Member State or EU public law. provides_public_service: True if the organisation provides services in a public-service context (recruitment for public sector, education, healthcare, social services, etc.). annex_iii_categories: List of Annex III high-risk categories the system falls under. E.g., ["employment-and-workforce", "education-and-vocational-training", "credit-scoring"]. Returns: Decision + rationale + Article 27 reference. """