Praxikon

EU AI Act and GDPR checks with sources: classify an AI system, trace each duty, find the supervisor.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
93%
Qualität der Benennung
91%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~12,669Tokens (Tool-Definitionen)
~15.2 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (9.90% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "praxikon": {
      "url": "https://www.praxikon.com/api/mcp"
    }
  }
}

Remote-Endpunkte

https://www.praxikon.com/api/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (9)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢classify_system(profile, lang, detail)

Use this as the first step when you hold a concrete AI system and need to know which routes of the EU AI Act come into view: prohibited practice screening, Annex III high risk, transparency, FRIA and the general purpose model route, and with a version 2 profile the wider set of duties, such as Article 26 for a deployer. It runs the deterministic decision engine over coded answers and returns one applicability status per assessed obligation, with the timing and what is still open. It is not meant for a general question about the law. An obligation the engine did not assess is listed in assessment_scope.not_assessed with the reason; it was not found inapplicable. It does not return a single coded classification label.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "profile": {
      "type": "object",
      "additionalProperties": false,
      "description": "The coded answers about one system. The fifteen version 1 fields are required. A field that does not bear on this case takes not_relevant, and unsure is a real answer that leads to insufficient_context rather than to a guess. A version 1 profile has five obligations assessed. To have the wider set assessed, including Article 26 for a deployer of a high risk system, also send profile_version 2.0.0, chain_roles (consistent with actor_role) and the twelve other version 2 scope facts: ai_system_scope, jurisdiction_established_in_eu, jurisdiction_market_in_eu, jurisdiction_output_in_eu, scope_exclusion, annex_i_product, annex_i_third_party_conformity, article_25_role_change, provider_outside_eu, sandbox_participation, real_world_testing and adverse_significant_decision. The remaining version 2 facts are optional: an unanswered fact is unknown and leads to insufficient_context, never to a silent no. The backend rejects a profile whose answers contradict each other.",
      "required": [
        "actor_role",
        "object_type",
        "eu_nexus",
        "article_5_signal",
        "annex_iii_domain",
        "annex_iii_use_case",
        "decision_influence",
        "article_50_scenarios",
        "article_50_market_date",
        "direct_interaction_obvious",
        "public_interest_editorial_control",
        "fria_context",
        "gpai_union_market",
        "gpai_market_date",
        "gpai_open_source_status"
      ],
      "properties": {
        "actor_role": {
          "type": "string",
          "enum": [
            "provider",
            "deployer",
            "provider_and_deployer",
            "gpai_model_provider",
            "importer_or_distributor",
            "unsure"
          ],
          "description": "The role the assessed organisation occupies for this system."
        },
        "object_type": {
          "type": "string",
          "enum": [
            "ai_system",
            "gpai_model",
            "ai_system_using_gpai",
            "unsure"
          ],
          "description": "What is being assessed: a system, a general purpose model, or a system built on one."
        },
        "eu_nexus": {
          "type": "string",
          "enum": [
            "offered_or_used_in_eu",
            "output_used_in_eu",
            "none",
            "unsure"
          ],
          "description": "The connection to the Union market. none leads to out of scope."
        },
        "article_5_signal": {
          "type": "string",
          "enum": [
            "none_known",
            "manipulation_exploitation_or_social_scoring",
            "biometric_or_remote_identification",
            "emotion_at_work_or_school",
            "predictive_policing",
            "non_consensual_intimate_or_csam",
            "unsure"
          ],
          "description": "Screening signal for the prohibited practices of Article 5."
        },
        "annex_iii_domain": {
          "type": "string",
          "enum": [
            "biometrics",
            "critical_infrastructure",
            "education",
            "employment",
            "essential_services",
            "law_enforcement",
            "migration_border",
            "justice_democracy",
            "none",
            "unsure"
          ],
          "description": "The Annex III domain of the intended purpose."
        },
        "annex_iii_use_case": {
          "type": "string",
          "enum": [
            "bio-1a",
            "bio-1b",
            "bio-1c",
            "ci-2",
            "edu-3a",
            "edu-3b",
            "edu-3c",
            "edu-3d",
            "emp-4a",
            "emp-4b",
            "es-5a",
            "es-5b",
            "es-5c",
            "es-5d",
            "le-6a",
            "le-6b",
            "le-6c",
            "le-6d",
            "le-6e",
            "mig-7a",
            "mig-7b",
            "mig-7c",
            "mig-7d",
            "jd-8a",
            "jd-8b",
            "none",
            "unsure",
            "not_relevant"
          ],
          "description": "The coded Annex III use case. Its prefix must match the domain: employment takes emp-, education takes edu-, and so on. none with domain none, unsure with domain unsure."
        },
        "decision_influence": {
          "type": "string",
          "enum": [
            "profiles_people",
            "materially_influences",
            "narrow_or_preparatory",
            "no_material_influence",
            "unsure",
            "not_relevant"
          ],
          "description": "Required when an exact Annex III use case is named, not_relevant otherwise."
        },
        "article_50_scenarios": {
          "type": "array",
          "minItems": 1,
          "maxItems": 5,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "direct_interaction",
              "synthetic_content",
              "emotion_or_biometric",
              "deepfake",
              "public_interest_text",
              "none",
              "unsure"
            ]
          },
          "description": "The transparency scenarios of Article 50 that occur. none and unsure are exclusive: neither combines with another value."
        },
        "article_50_market_date": {
          "type": "string",
          "enum": [
            "before_2026_08_02",
            "on_or_after_2026_08_02",
            "unsure",
            "not_relevant"
          ],
          "description": "Required for a provider with the synthetic_content scenario, not_relevant otherwise."
        },
        "direct_interaction_obvious": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Required with the direct_interaction scenario, not_relevant otherwise."
        },
        "public_interest_editorial_control": {
          "type": "string",
          "enum": [
            "yes_with_responsibility",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Required for a deployer with the public_interest_text scenario, not_relevant otherwise."
        },
        "fria_context": {
          "type": "string",
          "enum": [
            "public_body",
            "private_public_service",
            "creditworthiness",
            "life_or_health_insurance",
            "none",
            "unsure",
            "not_relevant"
          ],
          "description": "Required for a deployer with an exact Annex III use case other than ci-2, not_relevant otherwise."
        },
        "gpai_union_market": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Required for a general purpose model provider, not_relevant otherwise."
        },
        "gpai_market_date": {
          "type": "string",
          "enum": [
            "before_2025_08_02",
            "on_or_after_2025_08_02",
            "unsure",
            "not_relevant"
          ],
          "description": "Required when the model is placed on the Union market, not_relevant otherwise."
        },
        "gpai_open_source_status": {
          "type": "string",
          "enum": [
            "qualifying_without_systemic_risk",
            "not_qualifying_or_systemic_risk",
            "unsure",
            "not_relevant"
          ],
          "description": "Required when the model is placed on the Union market, not_relevant otherwise."
        },
        "profile_version": {
          "type": "string",
          "enum": [
            "2.0.0"
          ],
          "description": "Send 2.0.0 to have the wider set of obligations assessed. Omit it for a version 1 profile."
        },
        "chain_roles": {
          "type": "array",
          "minItems": 1,
          "maxItems": 6,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [
              "provider",
              "deployer",
              "importer",
              "distributor",
              "authorised_representative",
              "gpai_model_provider"
            ]
          },
          "description": "Version 2: the roles in the value chain, kept apart. Must agree with actor_role, for example [deployer] with actor_role deployer."
        },
        "ai_system_scope": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the assessed thing an AI system in the sense of Article 3(1)?"
        },
        "jurisdiction_established_in_eu": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the organisation established in the Union?"
        },
        "jurisdiction_market_in_eu": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the system placed on the market or put into service in the Union?"
        },
        "jurisdiction_output_in_eu": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the output used in the Union?"
        },
        "scope_exclusion": {
          "type": "string",
          "enum": [
            "none",
            "personal_non_professional",
            "military_defence_national_security",
            "research_before_market",
            "unsure"
          ],
          "description": "Version 2: an exclusion under Article 2, or none."
        },
        "annex_i_product": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the system a product, or a safety component of a product, under the Union legislation in Annex I?"
        },
        "annex_i_third_party_conformity": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: does that product need a third party conformity assessment? not_relevant without an Annex I product."
        },
        "safety_component": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the system used as a safety component?"
        },
        "article_25_role_change": {
          "type": "string",
          "enum": [
            "none",
            "own_name_or_trademark",
            "substantial_modification",
            "changed_purpose_high_risk",
            "unsure"
          ],
          "description": "Version 2: a role change under Article 25(1), or none."
        },
        "article_25_already_high_risk": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: with a role change, is the system concerned already high risk? not_relevant without a role change."
        },
        "third_party_components_integrated": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does a third party supply components that are integrated in the system?"
        },
        "article_6_3_exception": {
          "type": "string",
          "enum": [
            "none",
            "narrow_procedural",
            "improves_completed_activity",
            "detects_patterns",
            "preparatory",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: which condition of Article 6(3) is invoked, if any."
        },
        "article_6_3_no_significant_risk": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is there no significant risk of harm in the sense of Article 6(3)?"
        },
        "article_6_3_profiling": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does the system perform profiling of natural persons?"
        },
        "article_6_3_documented": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the Article 6(3) assessment documented?"
        },
        "gpai_compute_above_threshold": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the training compute above the threshold of Article 51(2)?"
        },
        "gpai_commission_designated": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: has the Commission designated the model as having systemic risk?"
        },
        "gpai_systemic_notification": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: has the Commission been notified under Article 52(1)?"
        },
        "gpai_high_impact_capabilities": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does the model have high impact capabilities under Article 51(1)(a)?"
        },
        "provider_outside_eu": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the provider established outside the Union?"
        },
        "controlled_input_data": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does the deployer exercise control over the input data (Article 26(4))?"
        },
        "logs_under_control": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: are the automatically generated logs under the control of the deployer (Article 26(6))?"
        },
        "workplace_use": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the system put into service or used at the workplace (Article 26(7))?"
        },
        "public_authority_deployer": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the deployer a public authority or Union body (Article 26(8))?"
        },
        "personal_data_processing": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does the use involve processing of personal data (Article 26(9))?"
        },
        "law_enforcement_remote_identification": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: is the system used for post remote biometric identification in law enforcement (Article 26(10))?"
        },
        "decisions_about_people": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: does the system make or assist decisions about natural persons (Article 26(11))?"
        },
        "adverse_significant_decision": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: can the output lead to a decision with legal or similarly significant adverse effects on a person (Article 86)?"
        },
        "risk_detected": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: has a risk in the sense of Article 79(1) been detected?"
        },
        "serious_incident": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: has a serious incident occurred?"
        },
        "sandbox_participation": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: does the system take part in an AI regulatory sandbox?"
        },
        "real_world_testing": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2: is the system tested in real world conditions outside a sandbox?"
        },
        "complaint_to_authority": {
          "type": "string",
          "enum": [
            "yes",
            "no",
            "unsure",
            "not_relevant"
          ],
          "description": "Version 2, optional: has a complaint been lodged with a market surveillance authority?"
        }
      }
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the labels and explanations. Dutch is the default."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ],
      "description": "Amount of data to return. brief keeps the outcome, the dates, the reasons, the open questions and the source with its locator; full adds the complete objects, every statement text and every hash, for re-computation or archiving.",
      "default": "brief"
    }
  },
  "required": [
    "profile"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ]
    },
    "dataset": {
      "type": "object"
    },
    "decision_engine_version": {
      "type": "string"
    },
    "snapshot_schema_version": {
      "type": "string"
    },
    "snapshot_id": {
      "type": "string"
    },
    "payload_hash_sha256": {
      "type": "string"
    },
    "profile": {
      "type": "object"
    },
    "summary": {
      "type": "object",
      "properties": {
        "applies": {
          "type": "integer"
        },
        "possibly_applies": {
          "type": "integer"
        },
        "not_indicated": {
          "type": "integer"
        },
        "insufficient_context": {
          "type": "integer"
        }
      }
    },
    "obligations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "obligation_id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "applicability": {
            "type": "string",
            "description": "applies, possibly_applies, not_indicated or insufficient_context."
          },
          "timing": {
            "type": "string"
          },
          "effective_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "timing_basis": {
            "type": [
              "string",
              "null"
            ],
            "description": "text_date, dataset_deadline, rule_transition or annex_i_product_route."
          },
          "high_risk_regime_from": {
            "type": [
              "string",
              "null"
            ],
            "description": "Practical date next to a text date."
          },
          "transition_ends_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_note": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_note_ref": {
            "type": "string",
            "description": "Key in deadline_notes."
          },
          "legal_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "blocking_flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "unresolved_questions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "open_legal_readings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "interpretation_status": {
            "type": "string"
          },
          "interpretation_note": {
            "type": "string"
          },
          "human_page": {
            "type": "string"
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "entity_version": {
            "type": "string"
          },
          "entity_payload_hash_sha256": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "subresults": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      }
    },
    "deadline_notes": {
      "type": "object"
    },
    "sources": {
      "type": "array"
    },
    "not_indicated_obligation_ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "blocking_flags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "open_questions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "evaluated_obligation_ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "evaluation_scope": {
      "type": "string"
    },
    "assessment_scope": {
      "type": [
        "object",
        "null"
      ],
      "description": "What this assessment did and did not assess, from the engine itself. not_assessed groups the obligations that were not assessed by reason (for example profile_version_below_2), with the facts that would have them assessed. Not assessed is not the same as not applying.",
      "properties": {
        "profile_version": {
          "type": [
            "string",
            "null"
          ]
        },
        "dataset_obligation_count": {
          "type": [
            "integer",
            "null"
          ]
        },
        "assessed_count": {
          "type": "integer"
        },
        "not_assessed_count": {
          "type": "integer"
        },
        "not_assessed": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "reason": {
                "type": "string"
              },
              "explanation": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "obligation_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "missing_facts": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "routes_not_run": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "missing_facts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "disclaimer": {
      "type": "string"
    },
    "privacy": {
      "type": "object"
    },
    "provenance": {
      "type": "object",
      "description": "Which published endpoints produced this result. Every call is listed with its full URL, so a reader can re-issue it and check the answer rather than trust it.",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "method",
              "url",
              "status"
            ],
            "properties": {
              "method": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "status": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "dataset",
    "summary",
    "obligations",
    "provenance"
  ]
}
🟢get_applicable_obligations(profile, applicability, lang, detail)

Use this when you need the obligations themselves for one assessed system rather than the classification picture: which obligations apply, which possibly apply, from when, why, and on which source and locator. Returns one entry per assessed obligation, filtered by applicability. A version 2 profile has the wider set assessed, including Article 26 for a deployer of a high risk system, with one sub result per paragraph. This is the assessed route, not a catalogue of all obligations in the dataset.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "profile": {
      "type": "object",
      "description": "The same coded profile that classify_system takes, with the same fields and codes: see the profile schema of classify_system. Send a version 2 profile to have the wider set assessed, including Article 26 for a deployer. The server validates the profile against that full schema."
    },
    "applicability": {
      "type": "array",
      "minItems": 1,
      "maxItems": 4,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "enum": [
          "applies",
          "possibly_applies",
          "not_indicated",
          "insufficient_context"
        ]
      },
      "description": "Which applicability statuses to return. Defaults to applies and possibly_applies. The counters and evaluated_obligation_ids stay complete whatever you filter on, so a filtered list can never be read as the whole assessment."
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the labels and explanations. Dutch is the default."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ],
      "description": "Amount of data to return. brief keeps the outcome, the dates, the reasons, the open questions and the source with its locator; full adds the complete objects, every statement text and every hash, for re-computation or archiving.",
      "default": "brief"
    }
  },
  "required": [
    "profile"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ]
    },
    "dataset": {
      "type": "object"
    },
    "decision_engine_version": {
      "type": "string"
    },
    "snapshot_id": {
      "type": "string"
    },
    "filtered_on": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "summary": {
      "type": "object"
    },
    "obligations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "obligation_id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "applicability": {
            "type": "string",
            "description": "applies, possibly_applies, not_indicated or insufficient_context."
          },
          "timing": {
            "type": "string"
          },
          "effective_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "timing_basis": {
            "type": [
              "string",
              "null"
            ],
            "description": "text_date, dataset_deadline, rule_transition or annex_i_product_route."
          },
          "high_risk_regime_from": {
            "type": [
              "string",
              "null"
            ],
            "description": "Practical date next to a text date."
          },
          "transition_ends_on": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_note": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline_note_ref": {
            "type": "string",
            "description": "Key in deadline_notes."
          },
          "legal_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "blocking_flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "why": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "unresolved_questions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "open_legal_readings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "interpretation_status": {
            "type": "string"
          },
          "interpretation_note": {
            "type": "string"
          },
          "human_page": {
            "type": "string"
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "entity_version": {
            "type": "string"
          },
          "entity_payload_hash_sha256": {
            "type": "string"
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "subresults": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      }
    },
    "deadline_notes": {
      "type": "object"
    },
    "evaluated_obligation_ids": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "evaluation_scope": {
      "type": "string"
    },
    "assessment_scope": {
      "type": [
        "object",
        "null"
      ],
      "description": "What this assessment did and did not assess, from the engine itself. not_assessed groups the obligations that were not assessed by reason (for example profile_version_below_2), with the facts that would have them assessed. Not assessed is not the same as not applying.",
      "properties": {
        "profile_version": {
          "type": [
            "string",
            "null"
          ]
        },
        "dataset_obligation_count": {
          "type": [
            "integer",
            "null"
          ]
        },
        "assessed_count": {
          "type": "integer"
        },
        "not_assessed_count": {
          "type": "integer"
        },
        "not_assessed": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "reason": {
                "type": "string"
              },
              "explanation": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "obligation_ids": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "missing_facts": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        },
        "routes_not_run": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "missing_facts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "A record in the register of primary documents. source_record_hash_sha256 covers only the three fields named in fingerprint_basis: it attests that we checked this document, in this edition, on this date. It is not a content hash of the external page and not an archive copy.",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          },
          "eli": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "verified_at": {
            "type": "string"
          },
          "source_record_hash_sha256": {
            "type": "string"
          },
          "fingerprint_basis": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "disclaimer": {
      "type": "string"
    },
    "provenance": {
      "type": "object",
      "description": "Which published endpoints produced this result. Every call is listed with its full URL, so a reader can re-issue it and check the answer rather than trust it.",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "method",
              "url",
              "status"
            ],
            "properties": {
              "method": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "status": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "obligations",
    "summary",
    "evaluated_obligation_ids",
    "provenance"
  ]
}
🟢explain_applicability(obligation_id, profile, effective_at, known_at, lang, ...)

Use this whenever you have to justify why an obligation does or does not bear on a case, and an outcome on its own is not enough. It returns the legal path: the conditions under which the rule is about a situation, the exceptions under which it is not despite those conditions, and the statements of the obligation split by kind, each with the primary source, the locator inside that source and the source record behind it. Supply a profile as well and the deterministic rule trace is added: which rule was met, not met or unknown for this case, plus the assumptions and the questions the engine could not settle. Use this rather than paraphrasing an obligation yourself: the conditions, the exceptions and the citations are published data and are not to be reconstructed from prose. Take the identifier from earlier tool output; a short form such as art. 26 resolves when it points at one obligation, else error_code and suggestions come back. A question without an identifier belongs with the short question tool or the case check.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "obligation_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The stable identifier, for example praxikon:eu:ai-act:obligation:article-50-transparency."
    },
    "profile": {
      "type": "object",
      "description": "The same coded profile that classify_system takes, with the same fields and codes: see the profile schema of classify_system. Send a version 2 profile to have the wider set assessed, including Article 26 for a deployer. The server validates the profile against that full schema."
    },
    "effective_at": {
      "type": "string",
      "maxLength": 64,
      "description": "Legal time pin, a date or an ISO instant. Defaults to the release default."
    },
    "known_at": {
      "type": "string",
      "maxLength": 64,
      "description": "Knowledge time pin, a date or an ISO instant. Defaults to the release default."
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the labels and explanations. Dutch is the default."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ],
      "description": "Amount of data to return. brief keeps the outcome, the dates, the reasons, the open questions and the source with its locator; full adds the complete objects, every statement text and every hash, for re-computation or archiving.",
      "default": "brief"
    }
  },
  "required": [
    "obligation_id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "obligation": {
      "type": [
        "object",
        "null"
      ]
    },
    "legal_path": {
      "type": "object",
      "properties": {
        "conditions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "operator": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            }
          }
        },
        "exceptions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "operator": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            }
          }
        },
        "official_facts": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "One statement inside an object. kind is load bearing: official_fact is attributable to a named primary source and is source checked, editorial_interpretation and recommended_action are Praxikon work. Do not merge the three.",
            "properties": {
              "kind": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "review_legal_status": {
                "type": "string"
              },
              "reviewed_at": {
                "type": "string"
              },
              "citations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source_id": {
                      "type": "string"
                    },
                    "source_locator": {
                      "type": "string"
                    },
                    "source_url": {
                      "type": "string"
                    },
                    "eli": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "editorial_interpretations": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "One statement inside an object. kind is load bearing: official_fact is attributable to a named primary source and is source checked, editorial_interpretation and recommended_action are Praxikon work. Do not merge the three.",
            "properties": {
              "kind": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "review_legal_status": {
                "type": "string"
              },
              "reviewed_at": {
                "type": "string"
              },
              "citations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source_id": {
                      "type": "string"
                    },
                    "source_locator": {
                      "type": "string"
                    },
                    "source_url": {
                      "type": "string"
                    },
                    "eli": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "recommended_actions": {
          "type": "array",
          "items": {
            "type": "object",
            "description": "One statement inside an object. kind is load bearing: official_fact is attributable to a named primary source and is source checked, editorial_interpretation and recommended_action are Praxikon work. Do not merge the three.",
            "properties": {
              "kind": {
                "type": "string"
              },
              "text": {
                "type": "string"
              },
              "review_legal_status": {
                "type": "string"
              },
              "reviewed_at": {
                "type": "string"
              },
              "citations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "source_id": {
                      "type": "string"
                    },
                    "source_locator": {
                      "type": "string"
                    },
                    "source_url": {
                      "type": "string"
                    },
                    "eli": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "reading": {
          "type": "string"
        }
      }
    },
    "view": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ]
    },
    "assessment": {
      "type": [
        "object",
        "null"
      ],
      "description": "Present only when a profile was supplied and the decision engine assessed this obligation for it. Null otherwise, with the reason in assessment_absent_reason and, when the engine said why, the detail in not_assessed."
    },
    "assessment_absent_reason": {
      "type": [
        "string",
        "null"
      ]
    },
    "not_assessed": {
      "type": [
        "object",
        "null"
      ],
      "description": "Why the engine did not assess this obligation for this profile, as the engine reported it, with the facts that would have it assessed. For example profile_version_below_2: send a version 2 profile.",
      "properties": {
        "reason": {
          "type": "string"
        },
        "explanation": {
          "type": [
            "string",
            "null"
          ]
        },
        "missing_facts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "A record in the register of primary documents. source_record_hash_sha256 covers only the three fields named in fingerprint_basis: it attests that we checked this document, in this edition, on this date. It is not a content hash of the external page and not an archive copy.",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          },
          "eli": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "verified_at": {
            "type": "string"
          },
          "source_record_hash_sha256": {
            "type": "string"
          },
          "fingerprint_basis": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "pin": {
      "type": "object",
      "description": "The release and the two time axes this answer resolved against. Store it next to anything you keep: an unpinned query is not reproducible, because the defaults move with each release.",
      "properties": {
        "dataset_id": {
          "type": "string"
        },
        "dataset_version": {
          "type": "string"
        },
        "schema_version": {
          "type": "string"
        },
        "lang": {
          "type": "string"
        },
        "effective_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "known_at": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "description": "Which published endpoints produced this result. Every call is listed with its full URL, so a reader can re-issue it and check the answer rather than trust it.",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "method",
              "url",
              "status"
            ],
            "properties": {
              "method": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "status": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "identifier_resolution": {
      "type": "object"
    },
    "error_code": {
      "type": "string",
      "enum": [
        "unknown_identifier",
        "ambiguous_identifier"
      ]
    },
    "requested_id": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "suggestions": {
      "type": "array"
    }
  },
  "required": [
    "obligation",
    "legal_path",
    "assessment",
    "sources",
    "provenance"
  ]
}
🟢get_source_provenance(entity_id, effective_at, known_at, lang, detail)

Use this before you quote, cite or hand on anything from this graph, and whenever a reader asks on what authority a statement rests. It returns, for one object, every statement with its kind, its primary source, the locator inside that source and the review metadata, plus the source records behind those citations and a ready made citation block with the identifier, the object version, the payload hash and the release. Works for any object type, not only obligations. Take the identifier from earlier tool output; a short form such as art. 26 resolves when it points at one obligation, else error_code and suggestions come back.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "entity_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The stable identifier of any object, for example praxikon:eu:ai-act:guidance:... or praxikon:eu:ai-act:obligation:... . An identifier in the flat raip:<type>:<slug> form published up to dataset 1.1.0 resolves to the same object."
    },
    "effective_at": {
      "type": "string",
      "maxLength": 64,
      "description": "Legal time pin."
    },
    "known_at": {
      "type": "string",
      "maxLength": 64,
      "description": "Knowledge time pin."
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the labels and explanations. Dutch is the default."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ],
      "description": "Amount of data to return. brief keeps the outcome, the dates, the reasons, the open questions and the source with its locator; full adds the complete objects, every statement text and every hash, for re-computation or archiving.",
      "default": "brief"
    }
  },
  "required": [
    "entity_id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ]
    },
    "found": {
      "type": "boolean"
    },
    "entity": {
      "type": [
        "object",
        "null"
      ]
    },
    "citation": {
      "type": [
        "object",
        "null"
      ]
    },
    "statements": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "One statement inside an object. kind is load bearing: official_fact is attributable to a named primary source and is source checked, editorial_interpretation and recommended_action are Praxikon work. Do not merge the three.",
        "properties": {
          "kind": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "review_legal_status": {
            "type": "string"
          },
          "reviewed_at": {
            "type": "string"
          },
          "citations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "source_id": {
                  "type": "string"
                },
                "source_locator": {
                  "type": "string"
                },
                "source_url": {
                  "type": "string"
                },
                "eli": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "statement_counts": {
      "type": "object"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "A record in the register of primary documents. source_record_hash_sha256 covers only the three fields named in fingerprint_basis: it attests that we checked this document, in this edition, on this date. It is not a content hash of the external page and not an archive copy.",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          },
          "canonical_url": {
            "type": "string"
          },
          "eli": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "verified_at": {
            "type": "string"
          },
          "source_record_hash_sha256": {
            "type": "string"
          },
          "fingerprint_basis": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "source_review": {
      "type": [
        "object",
        "null"
      ]
    },
    "review": {
      "type": [
        "object",
        "null"
      ]
    },
    "caveats": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pin": {
      "type": "object",
      "description": "The release and the two time axes this answer resolved against. Store it next to anything you keep: an unpinned query is not reproducible, because the defaults move with each release.",
      "properties": {
        "dataset_id": {
          "type": "string"
        },
        "dataset_version": {
          "type": "string"
        },
        "schema_version": {
          "type": "string"
        },
        "lang": {
          "type": "string"
        },
        "effective_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "known_at": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "provenance": {
      "type": "object",
      "description": "Which published endpoints produced this result. Every call is listed with its full URL, so a reader can re-issue it and check the answer rather than trust it.",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "method",
              "url",
              "status"
            ],
            "properties": {
              "method": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "status": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "identifier_resolution": {
      "type": "object"
    },
    "error_code": {
      "type": "string",
      "enum": [
        "unknown_identifier",
        "ambiguous_identifier"
      ]
    },
    "requested_id": {
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "suggestions": {
      "type": "array"
    }
  },
  "required": [
    "found",
    "statements",
    "sources",
    "provenance"
  ]
}
🟢get_national_enforcement(country, type, known_at, obligation, detail)

Use this for the national layer: which authority is designated in a member state, how far the implementing law has come, and which dated enforcement signals are recorded, each with a primary source. The authority is recorded as free text per member state and is deliberately not a graph identifier, because which national body fills the market surveillance role differs per member state. The same call returns the ruling register: judgments and supervisory decisions with the relation they bear to a provision (interprets, narrows, broadens, confirms, contradicts, or illustrates for context). An event says what happened, a ruling says what we know a provision means. Never present a related_gdpr ruling as AI Act case law: it rests on the GDPR and carries the illustrates relation only. This tool takes no lang: the tracker carries both languages on every record, in the fields that end in _nl and _en.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, for example NL. Omit for all member states."
    },
    "type": {
      "type": "string",
      "maxLength": 64,
      "description": "Narrow to one event type, for example implementing_law."
    },
    "known_at": {
      "type": "string",
      "maxLength": 10,
      "description": "Knowledge axis of the ruling register, as YYYY-MM-DD: returns the rulings we had recorded on that date and nothing that arrived afterwards. A provision keeps its own effective_at; only the reading moves."
    },
    "obligation": {
      "type": "string",
      "maxLength": 128,
      "description": "Slug of an obligation, for example article-50-transparency. Returns the rulings that bear on it. An empty result on an existing obligation means no ruling is recorded, not that the slug is wrong."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ],
      "description": "Amount of data to return. brief keeps the outcome, the dates, the reasons, the open questions and the source with its locator; full adds the complete objects, every statement text and every hash, for re-computation or archiving.",
      "default": "brief"
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string",
      "enum": [
        "brief",
        "full"
      ]
    },
    "events_total": {
      "type": "integer"
    },
    "verified_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "version": {
      "type": [
        "string",
        "null"
      ]
    },
    "stats": {
      "type": "object"
    },
    "filters": {
      "type": "object"
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "rulings": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "ruling_register": {
      "type": "object"
    },
    "empty_result_note": {
      "type": [
        "string",
        "null"
      ]
    },
    "provenance": {
      "type": "object",
      "description": "Which published endpoints produced this result. Every call is listed with its full URL, so a reader can re-issue it and check the answer rather than trust it.",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "method",
              "url",
              "status"
            ],
            "properties": {
              "method": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "status": {
                "type": "integer"
              }
            }
          }
        }
      }
    }
  },
  "required": [
    "countries",
    "events",
    "rulings",
    "provenance"
  ]
}
🟢check_case(lang, org, role, aiSystem, personalData, ...)

Use this when the user describes a concrete, intended use of AI or of personal data (a system, a project, a supplier) and wants to know whether a DPIA, a FRIA or duties under the GDPR (AVG) and the EU AI Act come into play. It runs the Praxikon case check: fixed rules over fixed answers, the same rules as the case check on the site. It returns per law (GDPR, AI Act, and where the two meet) each test with its outcome, the article and a source link, the DPIA and FRIA signal, the next steps and the facts that are still open. Fill in the answers yourself from what the user said, and ask the user for a fact that decides a test rather than guessing it. Leave out what is not known: it counts as unknown, never as no. Send only these coded answers and never the case text, names or other personal data; there is no field for them. Show the notice with the result. It does not build the implementation graph or the obligation list of one AI system.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the result. Dutch is the default."
    },
    "org": {
      "type": "string",
      "enum": [
        "public",
        "public_service",
        "company",
        "unknown"
      ],
      "default": "unknown",
      "description": "What kind of organisation uses the system? Values: public = Government or public body (municipality, implementing agency); public_service = Private organisation providing a public service (e.g. education, healthcare, housing association); company = Company or other private organisation."
    },
    "role": {
      "type": "string",
      "enum": [
        "deployer",
        "provider",
        "both",
        "gpai",
        "unknown"
      ],
      "default": "unknown",
      "description": "What is the role of that organisation with regard to the AI system? Values: deployer = Uses a system from a supplier (deployer); provider = Develops it itself and places it on the market under its own name (provider); both = Develops it itself and also uses it itself (provider and deployer); gpai = Makes a general-purpose AI model, such as a language model, for others."
    },
    "aiSystem": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Is it an AI system: does it infer the outcome from data itself (machine learning, language model), rather than only applying fixed rules written by a human? A system that only applies fixed rules drawn up by people, such as a calculation rule or a written-out decision tree, is not an AI system. A model trained on examples is, even if it does not keep learning after it is put into use. An expert system that draws conclusions by itself from encoded knowledge can be an AI system too."
    },
    "personalData": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Are personal data processed (data about identifiable people)?"
    },
    "domain": {
      "type": "string",
      "enum": [
        "public_benefits",
        "credit",
        "life_health_insurance",
        "emergency",
        "employment",
        "education",
        "biometrics",
        "law_enforcement",
        "migration",
        "justice",
        "critical_infra",
        "product",
        "none",
        "unknown"
      ],
      "default": "unknown",
      "description": "What is the system used for? These areas are listed in Annex III or Annex I of the AI Act. For other insurance than life or health, or for fraud detection, choose none. Values: public_benefits = Granting, reducing or recovering benefits, allowances or other public services; credit = Creditworthiness or credit score of natural persons; life_health_insurance = Risk assessment and pricing in life or health insurance only; emergency = Classifying emergency calls or emergency healthcare; employment = Recruitment, selection, evaluation or task allocation of staff; education = Admission, evaluation or monitoring of tests in education; biometrics = Biometric identification or categorisation of people; law_enforcement = Police and criminal investigation; migration = Migration, asylum or border control; justice = Administration of justice or elections; critical_infra = Safety component of critical infrastructure (energy, water, traffic); product = Part of a product with CE marking, such as a medical device; none = None of these."
    },
    "inService": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Was the system put into service or placed on the market before 2 December 2027? Also yes if it is in use now, or goes into use before that date. This concerns this system in its current form: if its design changes significantly afterwards, it counts as new."
    },
    "frequency": {
      "type": "string",
      "enum": [
        "continuous",
        "periodic",
        "limited",
        "unknown"
      ],
      "default": "unknown",
      "description": "For how long and how often is the system used? Values: continuous = Continuously, with no end date: for every application or case, or every day; periodic = Periodically, with no end date: in fixed rounds, for example monthly or yearly; limited = For a limited period, such as a pilot or a one-off project."
    },
    "profiling": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Does the system produce a score, ranking or prediction about persons (profiling)?"
    },
    "automated": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Is the decision about a person taken without a human assessing the case on its merits? Also yes if a human only sees part of it, such as the top ten, and the rest get a decision, such as a rejection, without human review. Merely not being selected for closer checks is no decision."
    },
    "effect": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Does the outcome have legal effects or affect people significantly (benefit, job, loan, investigation, exam)?"
    },
    "special": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Does it involve special categories of personal data (health, genetic, biometric, racial or ethnic origin, religion or belief, political opinion, trade union membership, sex life or sexual orientation)?"
    },
    "criminal": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Does it involve personal data relating to criminal convictions or offences, including a suspicion? Art. 10 GDPR: for example a criminal record, a criminal case, or a suspicion or report of an offence."
    },
    "scale": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Does it involve many people, or are people systematically monitored or observed? For example thousands of data subjects, all residents or customers, or continuous monitoring with cameras, location or software."
    },
    "interaction": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "chatbot",
          "generated",
          "deepfake",
          "emotion"
        ]
      },
      "uniqueItems": true,
      "maxItems": 4,
      "description": "Does the system do one or more of these things? Values: chatbot = People talk or chat with it directly; generated = It creates text, images, audio or video; deepfake = It creates images, audio or video that look real (deepfake); emotion = It recognises the emotions or mood of people."
    },
    "transfer": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ],
      "default": "unknown",
      "description": "Do the data go to a country outside the European Economic Area, including via the supplier or a cloud?"
    },
    "interactionKnown": {
      "type": "boolean",
      "description": "Whether the answer to interaction is settled, so that an empty list means none of these. Defaults to true when interaction is sent and to false when it is left out; never false when interaction lists items."
    },
    "apCategories": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "covert_investigation",
          "blacklists",
          "fraud_prevention",
          "credit_scores",
          "financial_situation",
          "genetic_data",
          "health_data",
          "partnerships",
          "camera_surveillance",
          "body_cameras",
          "employee_monitoring",
          "location_data",
          "communication_data",
          "internet_of_things",
          "profiling",
          "behaviour_influence",
          "biometric_data"
        ]
      },
      "uniqueItems": true,
      "maxItems": 17,
      "description": "Categories of the Dutch Data Protection Authority list of processing that requires a DPIA (Stcrt. 2019, 64418) that the facts of the case confirm. Leave out any category the facts do not show."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string"
    },
    "headline": {
      "type": "string"
    },
    "lang": {
      "type": "string"
    },
    "law_date": {
      "type": "string"
    },
    "outcome_labels": {
      "type": "object"
    },
    "outcome_note": {
      "type": "string"
    },
    "dpia": {
      "type": [
        "string",
        "null"
      ]
    },
    "fria": {
      "type": [
        "string",
        "null"
      ]
    },
    "laws": {
      "type": "object",
      "required": [
        "avg",
        "ai_act",
        "koppeling"
      ]
    },
    "recommendations": {
      "type": "array"
    },
    "transition_note": {
      "type": "object"
    },
    "left_out": {
      "type": "object"
    },
    "open_questions": {
      "type": "array"
    },
    "answers_used": {
      "type": "object"
    },
    "sources": {
      "type": "array"
    },
    "notice": {
      "type": "string"
    },
    "full_check_url": {
      "type": "string"
    },
    "provenance": {
      "type": "object",
      "required": [
        "retrieved"
      ]
    }
  },
  "required": [
    "view",
    "headline",
    "dpia",
    "fria",
    "laws",
    "open_questions",
    "notice",
    "full_check_url",
    "provenance"
  ]
}
🟢export_dpia_intake(lang, org, role, aiSystem, personalData, ...)

Use this when the user wants the DPIA intake of a concrete, intended use of AI or of personal data as a Word file to work on, and, where the FRIA comes into play, the FRIA draft too. It takes the same fixed fact answers as the case check of Praxikon, as coded choices, and gives the same documents as the download on the site: the four parts of Article 35(7) GDPR with the seventeen points of the Dutch government model DPIA, each point filled from the facts given, partly filled, or left as an open question, with articles and source links. Leave out what is not known: it counts as unknown and becomes an open question, never a no. Send only the coded answers and never the case text, names or other personal data; there is no field for them. The answer gives a download_url: the case check on the site with the answers in the part after #, which the browser never sends to the server; opening it shows the outcome and builds the Word file in the user's browser. Give the user that link, the explanation and the summary, and show the notice. Nothing is stored.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the document. Dutch is the default."
    },
    "org": {
      "type": "string",
      "enum": [
        "public",
        "public_service",
        "company",
        "unknown"
      ]
    },
    "role": {
      "type": "string",
      "enum": [
        "deployer",
        "provider",
        "both",
        "gpai",
        "unknown"
      ]
    },
    "aiSystem": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "personalData": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "domain": {
      "type": "string",
      "enum": [
        "public_benefits",
        "credit",
        "life_health_insurance",
        "emergency",
        "employment",
        "education",
        "biometrics",
        "law_enforcement",
        "migration",
        "justice",
        "critical_infra",
        "product",
        "none",
        "unknown"
      ]
    },
    "inService": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "frequency": {
      "type": "string",
      "enum": [
        "continuous",
        "periodic",
        "limited",
        "unknown"
      ]
    },
    "profiling": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "automated": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "effect": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "special": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "criminal": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "scale": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "interaction": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "chatbot",
          "generated",
          "deepfake",
          "emotion"
        ]
      },
      "uniqueItems": true,
      "maxItems": 4
    },
    "transfer": {
      "type": "string",
      "enum": [
        "yes",
        "no",
        "unknown"
      ]
    },
    "interactionKnown": {
      "type": "boolean"
    },
    "apCategories": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "covert_investigation",
          "blacklists",
          "fraud_prevention",
          "credit_scores",
          "financial_situation",
          "genetic_data",
          "health_data",
          "partnerships",
          "camera_surveillance",
          "body_cameras",
          "employee_monitoring",
          "location_data",
          "communication_data",
          "internet_of_things",
          "profiling",
          "behaviour_influence",
          "biometric_data"
        ]
      },
      "uniqueItems": true,
      "maxItems": 17
    }
  },
  "additionalProperties": false,
  "description": "The same coded answers, with the same codes and meanings, as the input of check_case. Leave out every answer that is not known."
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "explanation": {
      "type": "string"
    },
    "download_url": {
      "type": "string",
      "description": "The case check with the answers in the URL fragment; the browser builds the Word file."
    },
    "summary": {
      "type": "string",
      "description": "What the intake holds, point by point, as plain text to show in the chat."
    },
    "lang": {
      "type": "string"
    },
    "date": {
      "type": "string"
    },
    "rules_version": {
      "type": "string"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "kind",
          "title",
          "file_name",
          "points"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "dpia",
              "fria"
            ]
          },
          "title": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          },
          "points": {
            "type": "object"
          }
        }
      }
    },
    "dpia": {
      "type": [
        "string",
        "null"
      ]
    },
    "fria": {
      "type": [
        "string",
        "null"
      ]
    },
    "fria_included": {
      "type": "boolean"
    },
    "fria_reason": {
      "type": [
        "string",
        "null"
      ]
    },
    "stored": {
      "type": "boolean"
    },
    "notice": {
      "type": "string"
    },
    "full_check_url": {
      "type": "string"
    },
    "provenance": {
      "type": "object",
      "required": [
        "retrieved"
      ]
    }
  },
  "required": [
    "view",
    "title",
    "explanation",
    "download_url",
    "summary",
    "documents",
    "dpia",
    "fria",
    "fria_included",
    "stored",
    "notice",
    "full_check_url",
    "provenance"
  ]
}
🟢answer_question(question, lang)

Use this for a short, general question about the EU AI Act or the GDPR (AVG), such as whether a customer service chatbot has to say that it is AI or when a DPIA is required. It looks the question up in the published Praxikon answers: deterministic, no language model, and with the articles and sources. Before you call it, rewrite the question in general terms in at most 200 characters: no names of people or organisations, no contact details, no numbers that identify a person or a case. A question that looks like it contains personal data is refused. The question is not stored, logged or counted; only the use of the tool is counted per day. An unrecognised question returns no answer rather than a constructed one, and so does a question about law outside the EU: Praxikon covers only the EU AI Act and the GDPR. For one concrete system or case, the coded assessment tools give a fuller answer.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "minLength": 3,
      "maxLength": 200,
      "description": "The question in general terms, without names, contact details or identifying numbers."
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the answer. Dutch is the default."
    }
  },
  "required": [
    "question"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "view": {
      "type": "string"
    },
    "answered": {
      "type": "boolean"
    },
    "lang": {
      "type": "string"
    },
    "mode": {
      "type": "string",
      "description": "scenario, semantic, gdpr, koppeling, out_of_scope (law outside the EU) or none."
    },
    "answer": {
      "type": [
        "object",
        "null"
      ],
      "description": "The compact answer, as the published answer endpoint returns it, without the question."
    },
    "message": {
      "type": "string"
    },
    "alternatives": {
      "type": "object"
    },
    "stored": {
      "type": "boolean"
    },
    "provenance": {
      "type": "object",
      "required": [
        "retrieved"
      ]
    }
  },
  "required": [
    "view",
    "answered",
    "lang",
    "provenance"
  ]
}
🟢request_expert_review(lang, topic)

Use this only when the user asks for it in their own words: they want to talk to a person, ask for a human expert, or ask how to get in touch about their situation. Never call it on your own initiative, never as a closing suggestion, and never because an answer seems uncertain. It returns a link to book a 30 minute introductory call with Zahed Ashkara, an independent AI and privacy consultant behind Praxikon. Send no part of the conversation: the tool takes only a language and, optionally, a topic from a fixed list, and nothing about the user. Show the title, the sentence and the link to the user as they are, and let the user decide whether to book.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ],
      "default": "nl",
      "description": "Language of the text and of the booking page. Dutch is the default."
    },
    "topic": {
      "type": "string",
      "enum": [
        "ai_act_classification",
        "ai_act_obligations",
        "dpia",
        "fria",
        "ai_governance",
        "other"
      ],
      "description": "Optional subject of the question, from this fixed list only. It travels in the link as a campaign label (utm_content) to the booking page, so the booking can be traced to this tool. It is the only thing from the conversation that does; it names no person."
    }
  },
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "duration_minutes": {
      "type": "integer"
    },
    "lang": {
      "type": "string",
      "enum": [
        "nl",
        "en"
      ]
    },
    "topic": {
      "type": [
        "string",
        "null"
      ]
    },
    "note": {
      "type": "string"
    },
    "provenance": {
      "type": "object",
      "required": [
        "retrieved"
      ],
      "properties": {
        "retrieved": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    }
  },
  "required": [
    "title",
    "text",
    "url",
    "duration_minutes",
    "lang",
    "provenance"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet9 Tools