Praxikon
REMOTE · WWW.PRAXIKON.COM
EU AI Act and GDPR checks with sources: classify an AI system, trace each duty, find the supervisor.
Available components
Last scanned (10 hours ago)
Scores higher than 90% of remote servers
Reachable. Last reached 7 Nov 2026.
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability72
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4994 tokens (~554/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 76% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 7 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 6 Nov 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 5 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Nov 26 0
- “answer_question” reworded the description of “store_for_improvement” cosmetic
- “check_case” reworded the description of “inService” cosmetic
- “check_case” reworded the description of “store_for_improvement” cosmetic
- “classify_system” reworded the description of “detail” cosmetic
- “classify_system” reworded the description of “store_for_improvement” cosmetic
- “explain_applicability” reworded the description of “detail” cosmetic
- “explain_applicability” reworded the description of “store_for_improvement” cosmetic
- “export_dpia_intake” reworded the description of “store_for_improvement” cosmetic
- “get_applicable_obligations” reworded the description of “detail” cosmetic
- “get_applicable_obligations” reworded the description of “store_for_improvement” cosmetic
- “get_national_enforcement” reworded the description of “detail” cosmetic
- “get_national_enforcement” reworded the description of “store_for_improvement” cosmetic
- “get_source_provenance” reworded the description of “detail” cosmetic
- “get_source_provenance” reworded the description of “store_for_improvement” cosmetic
- “request_expert_review” reworded the description of “store_for_improvement” cosmetic
15 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +62
- Authorization: unverified → partial ▲ security
- HTTPS: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- HSTS header: fail → pass ▲ security
- Transport: fail → pass ▲ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_source_provenance” rewrote its description, which is the text the model reads security
- Endpoint reachability: not serving MCP → reachable ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: unverified → 100 ▲ functional
- Stability: unverified → 0.57 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- “check_case” reworded the description of “aiSystem” cosmetic
- “check_case” reworded the description of “apCategories” cosmetic
- “check_case” reworded the description of “domain” cosmetic
- “check_case” reworded the description of “inService” cosmetic
- “check_case” reworded the description of “interactionKnown” cosmetic
- “check_case” reworded the description of “org” cosmetic
- “check_case” reworded the description of “profiling” cosmetic
- “get_source_provenance” reworded the description of “entity_id” cosmetic
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 7 Nov 2026 · Probed https://www.praxikon.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=www.praxikon.com | CN=YR1,O=Let's Encrypt,C=US | 10 Oct 2026 | 8 Jan 2027 | RSA 4096 | SHA256-RSA | 58b8b1f356051218fed2fbb21fda14048b3 |
| SANs: www.praxikon.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of www.praxikon.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| praxikon.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://eu-assets.i.posthog.com https://snap.licdn.com https://app.cal.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob: https://app.cal.com https://cal.com; font-src 'self' data:; connect-src 'self' https://db.embedai.nl https://www.google-analytics.com https://region1.google-analytics.com https://www.googletagmanager.com https://eu.i.posthog.com https://eu-assets.i.posthog.com https://px.ads.linkedin.com https://www.linkedin.com https://app.cal.com https://cal.com https://*.cal.com; frame-src 'self' https://app.cal.com https://cal.com; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://www.praxikon.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://www.praxikon.com/api/mcp | HTTPS enforced | 301 | https://www.praxikon.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
answer_question Answer a short general question about the AI Act or the GDPR ~327
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 never goes into a URL, a server log or an analytics service. Praxikon may keep it, after a filter for personal data, to improve its answers, unless store_for_improvement is false (privacy statement, section 2.7). 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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Language of the answer. Dutch is the default. |
| question | string | yes | The question in general terms, without names, contact details or identifying numbers. |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| Name | Type | Req | Description |
|---|---|---|---|
| alternatives | object | – | – |
| answer | object|null | – | The compact answer, as the published answer endpoint returns it, without the question. |
| answered | boolean | yes | – |
| lang | string | yes | – |
| message | string | – | – |
| mode | string | – | scenario, semantic, gdpr, koppeling, out_of_scope (law outside the EU) or none. |
| provenance | object | yes | – |
| stored | boolean | – | – |
| view | string | yes | – |
No examples provided.
check_case Case check: GDPR and EU AI Act ~1,431
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.
| Name | Type | Req | Description |
|---|---|---|---|
| aiSystem | string | – | 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? Fixed rules drawn up by people, such as a… |
| apCategories | array | – | Categories of the Dutch Data Protection Authority list of processing that requires a DPIA (Stcrt. 2019, 64418) that the facts confirm; leave out any the facts do not show. |
| automated | string | – | 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,… |
| criminal | string | – | 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. |
| domain | string | – | What is the system used for? Areas of 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… |
| effect | string | – | Does the outcome have legal effects or affect people significantly (benefit, job, loan, investigation, exam)? |
| frequency | string | – | 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 ro… |
| inService | string | – | 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, or if the same type and model was on the EU market or i… |
| interaction | array | – | 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 vid… |
| interactionKnown | boolean | – | Whether interaction is settled, so that an empty list means none of these. Defaults to true when interaction is sent, false when left out; never false when interaction lists items. |
| lang | string | – | Language of the result. Dutch is the default. |
| org | string | – | What kind of organisation uses the system? Values: public = Government or public-law legal person (municipality, implementing agency, GGD, public university, public-authority school); public_service… |
| personalData | string | – | Are personal data processed (data about identifiable people)? |
| profiling | string | – | Does the system produce a score, ranking or prediction about persons (profiling)? Scoring businesses (establishments, declarants, licence holders): yes only if sole traders or other natural persons a… |
| role | string | – | 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 ow… |
| scale | string | – | 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… |
| special | string | – | 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… |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| transfer | string | – | Do the data go to a country outside the European Economic Area, including via the supplier or a cloud? |
| Name | Type | Req | Description |
|---|---|---|---|
| answers_used | object | – | – |
| dpia | string|null | yes | – |
| fria | string|null | yes | – |
| full_check_url | string | yes | – |
| headline | string | yes | – |
| lang | string | – | – |
| law_date | string | – | – |
| laws | object | yes | – |
| left_out | object | – | – |
| notice | string | yes | – |
| open_questions | array | yes | – |
| outcome_labels | object | – | – |
| outcome_note | string | – | – |
| provenance | object | yes | – |
| recommendations | array | – | – |
| sources | array | – | – |
| transition_note | object | – | – |
| view | string | yes | – |
No examples provided.
classify_system Classify one AI system against the routes of the Regulation ~491
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.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | brief keeps the outcome, dates, reasons, open questions and the source with its locator; full adds the complete objects, statement texts and hashes, for re-computation or archiving. |
| lang | string | – | Language of the labels and explanations. Dutch is the default. |
| profile | object | yes | 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_conte… |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_scope | object|null | – | 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 wo… |
| blocking_flags | array | – | – |
| dataset | object | yes | – |
| deadline_notes | object | – | – |
| decision_engine_version | string | – | – |
| disclaimer | string | – | – |
| evaluated_obligation_ids | array | – | – |
| evaluation_scope | string | – | – |
| not_indicated_obligation_ids | array | – | – |
| notes | array | – | – |
| obligations | array | yes | – |
| open_questions | array | – | – |
| payload_hash_sha256 | string | – | – |
| privacy | object | – | – |
| profile | object | – | – |
| provenance | object | yes | 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. |
| snapshot_id | string | – | – |
| snapshot_schema_version | string | – | – |
| sources | array | – | – |
| summary | object | yes | – |
| view | string | – | – |
No examples provided.
explain_applicability The legal path behind one obligation, not only the outcome ~473
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.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | brief keeps the outcome, dates, reasons, open questions and the source with its locator; full adds the complete objects, statement texts and hashes, for re-computation or archiving. |
| effective_at | string | – | Legal time pin, a date or an ISO instant. Defaults to the release default. |
| known_at | string | – | Knowledge time pin, a date or an ISO instant. Defaults to the release default. |
| lang | string | – | Language of the labels and explanations. Dutch is the default. |
| obligation_id | string | yes | The stable identifier, for example praxikon:eu:ai-act:obligation:article-50-transparency. |
| profile | object | – | 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 Articl… |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| Name | Type | Req | Description |
|---|---|---|---|
| assessment | object|null | yes | 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… |
| assessment_absent_reason | string|null | – | – |
| caveats | array | – | – |
| error_code | string | – | – |
| identifier_resolution | object | – | – |
| legal_path | object | yes | – |
| message | string | – | – |
| not_assessed | object|null | – | 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. |
| obligation | object|null | yes | – |
| pin | object | – | 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. |
| provenance | object | yes | 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. |
| requested_id | string | – | – |
| sources | array | yes | – |
| suggestions | array | – | – |
| view | string | – | – |
No examples provided.
export_dpia_intake DPIA intake as a Word file ~452
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. Praxikon keeps no copy of the file.
| Name | Type | Req | Description |
|---|---|---|---|
| aiSystem | string | – | – |
| apCategories | array | – | – |
| automated | string | – | – |
| criminal | string | – | – |
| domain | string | – | – |
| effect | string | – | – |
| frequency | string | – | – |
| inService | string | – | – |
| interaction | array | – | – |
| interactionKnown | boolean | – | – |
| lang | string | – | Language of the document. Dutch is the default. |
| org | string | – | – |
| personalData | string | – | – |
| profiling | string | – | – |
| role | string | – | – |
| scale | string | – | – |
| special | string | – | – |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| transfer | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | – |
| documents | array | yes | – |
| download_url | string | yes | The case check with the answers in the URL fragment; the browser builds the Word file. |
| dpia | string|null | yes | – |
| explanation | string | yes | – |
| fria | string|null | yes | – |
| fria_included | boolean | yes | – |
| fria_reason | string|null | – | – |
| full_check_url | string | yes | – |
| lang | string | – | – |
| notice | string | yes | – |
| provenance | object | yes | – |
| rules_version | string | – | – |
| stored | boolean | yes | – |
| summary | string | yes | What the intake holds, point by point, as plain text to show in the chat. |
| title | string | yes | – |
| view | string | yes | – |
No examples provided.
get_applicable_obligations Which obligations the decision engine indicates for one system ~337
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.
| Name | Type | Req | Description |
|---|---|---|---|
| applicability | array | – | 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… |
| detail | string | – | brief keeps the outcome, dates, reasons, open questions and the source with its locator; full adds the complete objects, statement texts and hashes, for re-computation or archiving. |
| lang | string | – | Language of the labels and explanations. Dutch is the default. |
| profile | object | yes | 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 Articl… |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_scope | object|null | – | 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 wo… |
| dataset | object | – | – |
| deadline_notes | object | – | – |
| decision_engine_version | string | – | – |
| disclaimer | string | – | – |
| evaluated_obligation_ids | array | yes | – |
| evaluation_scope | string | – | – |
| filtered_on | array | – | – |
| obligations | array | yes | – |
| provenance | object | yes | 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. |
| snapshot_id | string | – | – |
| sources | array | – | – |
| summary | object | yes | – |
| view | string | – | – |
No examples provided.
get_national_enforcement Who supervises, per member state ~435
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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | ISO 3166-1 alpha-2 country code, for example NL. Omit for all member states. |
| detail | string | – | brief keeps the outcome, dates, reasons, open questions and the source with its locator; full adds the complete objects, statement texts and hashes, for re-computation or archiving. |
| known_at | string | – | 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 mo… |
| obligation | string | – | 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. |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| type | string | – | Narrow to one event type, for example implementing_law. |
| Name | Type | Req | Description |
|---|---|---|---|
| countries | array | yes | – |
| empty_result_note | string|null | – | – |
| events | array | yes | – |
| events_total | integer | – | – |
| filters | object | – | – |
| provenance | object | yes | 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. |
| ruling_register | object | – | – |
| rulings | array | yes | – |
| stats | object | – | – |
| verified_at | string|null | – | – |
| version | string|null | – | – |
| view | string | – | – |
No examples provided.
get_source_provenance Where a published statement comes from ~390
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, and for a GDPR object under praxikon:eu:gdpr as well, which is read from the GDPR obligations graph. 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.
| Name | Type | Req | Description |
|---|---|---|---|
| detail | string | – | brief keeps the outcome, dates, reasons, open questions and the source with its locator; full adds the complete objects, statement texts and hashes, for re-computation or archiving. |
| effective_at | string | – | Legal time pin. |
| entity_id | string | yes | The stable identifier of any object, for example praxikon:eu:ai-act:guidance:..., praxikon:eu:ai-act:obligation:... or praxikon:eu:gdpr:obligation:... . An identifier in the flat raip:<type>:<slug> f… |
| known_at | string | – | Knowledge time pin. |
| lang | string | – | Language of the labels and explanations. Dutch is the default. |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| Name | Type | Req | Description |
|---|---|---|---|
| caveats | array | – | – |
| citation | object|null | – | – |
| entity | object|null | – | – |
| error_code | string | – | – |
| found | boolean | yes | – |
| identifier_resolution | object | – | – |
| message | string | – | – |
| pin | object | – | 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. |
| provenance | object | yes | 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. |
| requested_id | string | – | – |
| review | object|null | – | – |
| source_review | object|null | – | – |
| sources | array | yes | – |
| statement_counts | object | – | – |
| statements | array | yes | – |
| suggestions | array | – | – |
| view | string | – | – |
No examples provided.
request_expert_review Request a call with a human expert ~296
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.
| Name | Type | Req | Description |
|---|---|---|---|
| lang | string | – | Language of the text and of the booking page. Dutch is the default. |
| store_for_improvement | boolean | – | Optional. Set to false when the user asks that Praxikon does not keep this request to improve its answers; only the anonymous daily count remains. See https://www.praxikon.com/nl/legal/privacy, secti… |
| topic | string | – | 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 th… |
| Name | Type | Req | Description |
|---|---|---|---|
| duration_minutes | integer | yes | – |
| lang | string | yes | – |
| note | string | – | – |
| provenance | object | yes | – |
| text | string | yes | – |
| title | string | yes | – |
| topic | string|null | – | – |
| url | string | yes | – |
No examples provided.
How do I install the Praxikon MCP server?
Praxikon is a hosted endpoint at https://www.praxikon.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · www.praxikon.com
claude mcp add --transport http com-praxikon-praxikon 'https://www.praxikon.com/api/mcp'
What is the Praxikon MCP server?
Praxikon is an MCP server listed in the public MCP registry as com.praxikon/praxikon. EU AI Act and GDPR checks with sources: classify an AI system, trace each duty, find the supervisor. This page covers its hosted endpoint (https://www.praxikon.com/api/mcp).
Is the Praxikon MCP server safe to use?
Praxikon scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Praxikon MCP server expose?
Praxikon exposes 9 tools: classify_system, get_applicable_obligations, explain_applicability, get_source_provenance, get_national_enforcement, and 4 more. Their descriptions and schemas cost roughly 4,632 tokens of context every time the server is loaded.
Does the Praxikon MCP server require authentication?
No. We connected to Praxikon without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Praxikon MCP server still maintained?
Praxikon is still listed as active in the MCP registry. We last reached this channel on 7 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Praxikon MCP server?
VerifyMCP ran 13 checks on Praxikon, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.