GXP GATEWAY AUDIT
GxP Gateway Audit (package mcp-glp-audit-proxy) records every call your AI assistants, integrations and gateways make to your systems, in a tamper-evident, fail-closed audit trail you host yourself. It complements your systems' own audit trail and is designed to support GLP/GxP, 21 CFR Part 11 and EU GMP Annex 11 workflows.
Use AI and automation on regulated data without losing track of who did what, when and why.
Who called which system, what was done, when, and the reason given, written at the moment of the call.
Records are hash-chained. If one is altered, removed or reordered, verification shows exactly where.
Fail-closed: if a record cannot be written, the call does not go through, and you are alerted.
Optionally require an approver to approve, review or reject a call before it is authorised.
Search and export the trail, run review-by-exception, and produce an offline regulatory report of your configuration.
Runs as a reverse proxy in front of what you already have: clients only change their base URL. Always over TLS.
GxP Gateway Audit is designed to support the audit-trail and data-integrity requirements of each regulation below. Whether a system meets a regulation depends on the customer's validation, configuration and procedures.
Status: Supported in Community (audit trail, access); e-signatures out of scope
Key controls: Hash-chained time-stamped trail, RBAC, export
Your part: Customer validates, syncs clocks, reviews trail; approval is not an e-signature
CommunityStatus: Supported in Community
Key controls: Reason on writes, per-person identity
Your part: Analysed for record-keeping clauses only; keep reason capture on, no shared tokens
CommunityStatus: Supported in Community
Key controls: Reconstruction of events, unique attribution
Your part: Customer SOPs and review
PartlyStatus: Partly supported
Key controls: Digital logs as assurance evidence
Your part: Device quality-system software; supporting practice only
CommunityStatus: Supported in Community
Key controls: Who/what/when/why, UTC, audit cannot be switched off, searchable export
Your part: Draft not in force; old/new values stay in target system
PartlyStatus: Partly supported
Key controls: Retention profiles, no disposal
Your part: Analysed for record clauses; archive is customer duty
CommunityStatus: Supported in Community
Key controls: UTC, config record at start, search/export
Your part: Main text analysed; sec. 6.12 and Annexes 1-4 not read in detail
PartlyStatus: Partly supported
Key controls: Automatic event logs, 6-month default retention
Your part: Only if the customer's AI system is high-risk; gateway alone does not meet Art. 12
Customer responsibilityStatus: Customer responsibility
Key controls: hash_only default, personal-data table (Art. 30)
Your part: Customer is controller: body mode, retention, erasure; no encryption at rest in Community
CommunityStatus: Supported in Community
Key controls: Append-only attributable records, QA read-only, 10-year profile, legal hold
Your part: No. 1 analysed for record clauses; facility SOPs and archive
CommunityStatus: Supported in Community
Key controls: Startup record, config changes, reason
Your part: Add-on audit is a justified, time-bound measure
PartlyStatus: Partly supported
Key controls: Tamper-evident chain, independent verify, TLS 1.3
Your part: WORM and signing: Pro or customer storage; failed-login lockout optional, off by default
CommunityStatus: Supported in Community
Key controls: Users, dates, reasons, audit enable/disable
Your part: No shared logins: customer user management
CommunityStatus: Supported in Community
Key controls: Who/what/when/why at time of call
Your part: ALCOA+ across process is customer duty
CommunityStatus: Supported in Community
Key controls: True-time records
Your part: PI 011-3 analysed for audit trail/backup sections only
PartlyStatus: Partly supported
Key controls: Access and role logging, retention
Your part: Data governance sections only; GCP not a target use
CommunityStatus: Supported in Community
Key controls: Person-linked changes with reason, 10-year retention profile
Your part: Archive and backup are customer duties
Customer responsibilityStatus: Customer responsibility (tools Supported in Community)
Key controls: OQ runner, RTM, config report
Your part: Customer validates the gateway (AGIT category C); Pro adds IQ/OQ pack
PartlyStatus: Partly supported
Key controls: Readable JSONL, open verifier, archive manifest
Your part: WORM/off-site archive and archivist are customer duties
PartlyStatus: Partly supported
Key controls: Release notes naming affected requirements
Your part: Impact assessment and supplier agreements are customer duties
Not analysedStatus: Not analysed
Key controls: -
Your part: Paywalled; not regulator text
Not analysedStatus: Not analysed
Key controls: -
Your part: Out of scope; e-signatures not provided
Not analysedStatus: Not analysed
Key controls: -
Your part: No separate guideline located; Swissmedic applies EU GMP/PIC/S
No regulation is Pro-only as a whole: every supported row is supported by the free Community edition. Pro adds features such as record signing, WORM retention, database storage and the IQ/OQ pack. Personal electronic signatures under 21 CFR Part 11 are out of scope.
| Regulation | Type | Origin | Support | Key controls | Notes / customer action |
|---|---|---|---|---|---|
| FDA 21 CFR Part 11 | Regulation | USA | Community Supported in Community (audit trail, access); e-signatures out of scope | Hash-chained time-stamped trail, RBAC, export | Customer validates, syncs clocks, reviews trail; approval is not an e-signature |
| 21 CFR 58 (GLP) and 211 (GMP), record clauses | Regulation | USA | Community Supported in Community | Reason on writes, per-person identity | Analysed for record-keeping clauses only; keep reason capture on, no shared tokens |
| FDA Part 11 Scope and Application (2003), Data Integrity Q&A (2018) | Guidance | USA | Community Supported in Community | Reconstruction of events, unique attribution | Customer SOPs and review |
| FDA Computer Software Assurance (2026) | Guidance | USA | Partly Partly supported | Digital logs as assurance evidence | Device quality-system software; supporting practice only |
| EU GMP Annex 11 (2011) and 2025 draft | Regulation (GMP guide) | EU / PIC/S | Community Supported in Community | Who/what/when/why, UTC, audit cannot be switched off, searchable export | Draft not in force; old/new values stay in target system |
| EU GMP Chapter 4 | Regulation (GMP guide) | EU | Partly Partly supported | Retention profiles, no disposal | Analysed for record clauses; archive is customer duty |
| EMA computerised systems in clinical trials (2023) | Guidance | EU | Community Supported in Community | UTC, config record at start, search/export | Main text analysed; sec. 6.12 and Annexes 1-4 not read in detail |
| EU AI Act (high-risk systems) | Regulation | EU | Partly Partly supported | Automatic event logs, 6-month default retention | Only if the customer's AI system is high-risk; gateway alone does not meet Art. 12 |
| GDPR (EU) 2016/679 | Regulation | EU | Customer responsibility Customer responsibility | hash_only default, personal-data table (Art. 30) | Customer is controller: body mode, retention, erasure; no encryption at rest in Community |
| OECD GLP Principles No. 1 and No. 17 | Guidance (GLP) | OECD | Community Supported in Community | Append-only attributable records, QA read-only, 10-year profile, legal hold | No. 1 analysed for record clauses; facility SOPs and archive |
| OECD No. 22 Data Integrity | Guidance (GLP) | OECD | Community Supported in Community | Startup record, config changes, reason | Add-on audit is a justified, time-bound measure |
| OECD No. 15, No. 25, No. 17 Suppl. 1 | Guidance (GLP) | OECD | Partly Partly supported | Tamper-evident chain, independent verify, TLS 1.3 | WORM and signing: Pro or customer storage; failed-login lockout optional, off by default |
| WHO TRS 1033 Annex 4 | Guidance | International (WHO) | Community Supported in Community | Users, dates, reasons, audit enable/disable | No shared logins: customer user management |
| MHRA GxP Data Integrity (2018) | Guidance | UK | Community Supported in Community | Who/what/when/why at time of call | ALCOA+ across process is customer duty |
| PIC/S PI 041-1 and PI 011-3 | Guidance | International (PIC/S) | Community Supported in Community | True-time records | PI 011-3 analysed for audit trail/backup sections only |
| ICH E6(R3) | Guidance (GCP) | International (ICH) | Partly Partly supported | Access and role logging, retention | Data governance sections only; GCP not a target use |
| Swiss GLP Ordinance SR 813.112.1 | Regulation | Switzerland | Community Supported in Community | Person-linked changes with reason, 10-year retention profile | Archive and backup are customer duties |
| Swiss AGIT Validation of Computerised Systems V4.0 | Guidance (GLP) | Switzerland | Customer responsibility Customer responsibility (tools Supported in Community) | OQ runner, RTM, config report | Customer validates the gateway (AGIT category C); Pro adds IQ/OQ pack |
| Swiss AGIT Archiving and Acquisition of Electronic Raw Data V3.0 | Guidance (GLP) | Switzerland | Partly Partly supported | Readable JSONL, open verifier, archive manifest | WORM/off-site archive and archivist are customer duties |
| Swiss AGIT Change Management and IT Service Providers V2.0 | Guidance (GLP) | Switzerland | Partly Partly supported | Release notes naming affected requirements | Impact assessment and supplier agreements are customer duties |
| ISPE GAMP 5 2nd ed. | Industry guide | International | Not analysed Not analysed | - | Paywalled; not regulator text |
| eIDAS / ZertES (qualified signatures) | Regulation | EU / Switzerland | Not analysed Not analysed | - | Out of scope; e-signatures not provided |
| Swissmedic GMP/GCP guidance | Guidance | Switzerland | Not analysed Not analysed | - | No separate guideline located; Swissmedic applies EU GMP/PIC/S |
GxP Gateway Audit is an audit proxy placed in front of MCP tool servers and HTTPS APIs. It writes a computer-generated, time-stamped, hash-chained audit trail of every call. It is designed to support customers' GLP, GMP and Part 11 data-integrity programmes. It has no third-party approval, and using it does not by itself make any system meet these rules. Fitness for use must be established by the customer's own validation, SOPs and reviews.
Texts checked: 25 October 2026, official sources (eCFR, fda.gov, health.ec.europa.eu, oecd.org, one.oecd.org, who.int, fedlex.admin.ch, picscheme.org, gov.uk, ich.org, ai-act-service-desk.ec.europa.eu).
Requirement: 11.10(e) "Use of secure, computer-generated, time-stamped audit trails to independently record the date and time of operator entries and actions that create, modify, or delete electronic records. Record changes shall not obscure previously recorded information." Also 11.10(b) copies, 11.10(c) protection, 11.10(d) "Limiting system access to authorized individuals", 11.10(g) authority checks.
Designed to support: server-generated UTC timestamps; append-only SHA-256 hash chain with a verify tool that detects altered, removed or reordered entries; fail-closed (no response is returned if the record cannot be written); role-based access (operator, approver, QA read-only, admin); tool and route allow/deny lists; complete electronic export.
Customer responsibility: system validation, clock synchronisation, record retention and backup, user management, and audit trail review. Electronic signatures (11.50, 11.70, 11.100, 11.200, 11.300) are out of scope; the approval feature is not an electronic signature.
Requirement: 58.130(e) changes "shall indicate the reason for such change"; Data Integrity Q&A 2018 defines an audit trail as a record that "allows for reconstruction of the course of events" and warns "When login credentials are shared, a unique individual cannot be identified through the login".
Designed to support: a reason is required on write calls by default (X-Audit-Reason header or reason field); per-person identity through one client certificate per person, or through a user id from an authenticated gateway.
Customer responsibility: keep reason capture switched on; do not rely on a shared token alone for attribution.
Requirement: Annex 11 sec. 9 "For change or deletion of GMP-relevant data the reason should be documented"; 12.4 systems "should be designed to record the identity of operators entering, changing, confirming or deleting data including date and time"; 7.1 "Access to data should be ensured throughout the retention period". The 2025 draft (consultation, not in force) adds who/what/when/why, time zone, audit trail "enabled and locked at all times", and searchable, sortable copies.
Designed to support: reason on writes, operator identity and UTC time in each record, audit that cannot be switched off (attempts are logged), searchable export for QA.
Customer responsibility: risk assessment, periodic audit trail review, retention and archive controls, and capturing old and new values in the target system's own audit trail.
Requirement: No. 17 para 80 "Any change to electronic records must not obscure the original entry and be time and date stamped and traceable to the person who made the change"; para 95 record "the date, time and identity of operators entering, changing, confirming or deleting data"; No. 1 8.3.5 "Reason for changes should be given."
Designed to support: append-only, time-stamped, attributable records with reason; QA read-only role; admin-only settings; Swiss GLP retention profile (10 years after study completion) with legal hold.
Customer responsibility: test facility SOPs, archive management, and retaining original and modified data in the target system (No. 17 para 83).
Requirement: MHRA 6.13 an audit trail records actions "without obscuring or overwriting the original record" and captures "who, what, when and why"; PIC/S 9.6 entries "recorded in true time".
Designed to support: per-call records written at the time of the call, with identity, action, time and reason.
Customer responsibility: data governance, ALCOA+ controls across the whole process, and review.
Requirement: OECD No. 22 6.13 audit trails "should always be switched on during GLP activities", and switching them off and on again "should" be recorded automatically; WHO TRS 1033 Annex 4 11.10 audit trails "should reflect ... users, dates, times, ... changes and reasons for changes ... and enabling and disenabling of audit trails", 11.9 "shared logins or generic user access should not be used"; Swiss GLP Ordinance (SR 813.112.1) Annex 2 sec. 8.3 para 5 audit trails linking changes to persons with a reason, and sec. 10 retention "for at least ten years after study completion".
Designed to support: a record written when auditing starts; configuration changes recorded; per-person identity via client certificates or an authenticated gateway; reason on writes; a 10-year Swiss GLP retention profile.
Customer responsibility: individual user accounts, periodic checks that auditing is running, archive and backup. WHO 11.12 and OECD No. 22 6.13 accept add-on audit software as a justified, documented and time-bound measure for systems without their own audit trail, not as a permanent replacement.
AGIT guidance is not legally binding; it interprets the GLP Principles for Swiss test facilities. In a GLP test facility the gateway is itself a computerised system that transfers and stores GLP data, so the customer validates it like any configurable system (AGIT category C). The gateway is designed to support that work: an open OQ test runner, a requirements traceability matrix, a configuration report per regulation, release notes, audit-trail search and export for the audit-trail review SOP, and documented system requirements. Backup and restore, contingency planning and the validation itself remain customer procedures.
AGIT guidance is not a legal document. It expects archived electronic raw data and their audit trails to stay complete, unaltered, linked to their metadata and readable for the whole retention period (at least 10 years under the Swiss GLP Ordinance), with an index of archived files, integrity checks at risk-based intervals, tested backups, validated migrations, and disposal only with documented test facility management approval.
Designed to support: plain-text JSONL records readable with standard tools and an open-source verifier; a hash chain and head file that show whether a log is complete and unaltered; UTC timestamps; a 10-year retention profile, legal hold, and no disposal function in the Community edition. Also in Community 0.4.0: an archive manifest (archive-manifest: file list with sizes, hashes, record ranges and versions); verification of an archived copy against that manifest (verify --manifest) with a dated check report; closing a log segment requires a reason, a ticket and an approver, all recorded; offline runs (verify, export, manifest, report, review) are written to a separate hash-chained run log, checked with verify-run-log, and never append to the live audit log.
Customer responsibility: the archivist, archive storage on read-only or WORM media, off-site backups, clock synchronisation, control of the gateway configuration, periodic integrity checks, migration and disposal procedures. The gateway records gateway activity; it complements, and does not replace, the data audit trail of the target system.
Requirement: Art. 12(1) high-risk AI systems "shall technically allow for the automatic recording of events (logs)"; Art. 19(1) and 26(6) logs kept "of at least six months, unless provided otherwise in applicable Union or national law".
Designed to support: automatic logs of every tool or API call that a provider or deployer may keep; a 6-month default retention floor. The gateway does not by itself make an AI system meet Art. 12; whether the AI Act applies depends on the customer's system.
Every audit record holds personal data (user id and name, client certificate fingerprint, request path, kept headers), whatever the body mode. The body mode is the customer's choice and applies to both MCP and HTTPS traffic: the default hash_only stores only SHA-256 hashes of bodies, while full stores request and response bodies, which may include personal data. A SHA-256 of a short body can be re-identified by guessing, so hash_only is not anonymisation. The customer is the controller and decides the lawful basis, the body mode, retention, and how to answer erasure requests. Records are append-only and hash-chained: removing one breaks verification, so legal retention duties (GDPR Art. 17(3)) and erasure must be weighed by the customer before choosing full mode. The Community edition does not encrypt the log at rest; use disk encryption. A table of the personal data in each record is provided for the customer's record of processing (Art. 30).
These OECD advisory documents expect archived electronic records to be locked so they cannot be altered or deleted without detection, transfers documented with a chain of custody, migrations validated, accounts locked after repeated failed sign-ins, backups kept apart from the original data, and controls in cloud settings that the test facility runs independently of the provider.
Designed to support: a hash chain and head file that make alteration or deletion detectable; verification that the test facility can run itself against a head value it keeps on another system; TLS 1.3 for remote access; recorded failed authentication attempts. Also in Community 0.4.0: an archive manifest with custody records (archive-transfer) and a receipt that is added only when the received package matches (verify --manifest --received-by); an optional limit on repeated failed authentication attempts (listen.auth_failure_limit), off unless configured.
Customer responsibility: read-only or WORM archive storage, off-site backups of logs and configuration, restore tests, separation of system administration from data ownership, and service agreements with any hosting provider.
The EMA guideline expects changes to user roles and permissions to be recorded, timestamps to be unambiguous, the audit trail to be exportable as a searchable data file, the generation of data extracts and exports to be traceable, and audit trail review to be risk-based. AGIT expects software upgrades to be impact-assessed against the affected requirements.
Designed to support: UTC timestamps; recorded configuration at every start; audit-trail search and export. Also in Community 0.4.0: each startup record holds the identities and roles, the body mode and a SHA-256 of the effective configuration, and lists what changed since the previous start (with an optional change reason); a review-by-exception report (review) with JSON, Markdown or CSV output; a record of each offline export and verification run in a separate hash-chained run log; release notes that name the affected requirements and the effect on existing records; and an OQ runner option (--requirement) that repeats only the tests mapped to named requirements.
The gateway's hash chain is kept on the customer's system. It is not a distributed or independent ledger.
| Regulation or guidance | Status |
|---|---|
| 21 CFR Part 11 | Analysed |
| 21 CFR Part 58 | Analysed (record clauses: 58.130(e), 58.190, 58.195) |
| 21 CFR 211 (record-related) | Analysed (record clauses: 211.68, 211.180, Subpart J) |
| FDA Part 11 Scope and Application (2003) | Analysed |
| FDA Data Integrity Q&A (2018) | Analysed |
| FDA Computer Software Assurance guidance (Feb 2026) | Analysed (applies to device quality-system software; supporting practice only) |
| EU GMP Annex 11 (2011) | Analysed |
| EU GMP Annex 11 draft (2025) | Analysed (draft, not in force) |
| EU GMP Chapter 4 | Analysed (record clauses: 4.9-4.10, retention) |
| OECD GLP No. 1 | Analysed (record clauses: 8.3.5, 10) |
| OECD GLP No. 17 | Analysed |
| OECD GLP No. 22 | Analysed |
| PIC/S PI 041-1 | Analysed |
| MHRA GxP Data Integrity (2018) | Analysed |
| WHO TRS 1033 Annex 4 | Analysed |
| Swiss GLP Ordinance SR 813.112.1 | Analysed (Swissmedic applies EU GMP/PIC/S; no separate computerised-system guideline located) |
| ICH E6(R3) | Analysed (data governance: 4.2.2-4.2.8, 4.3.8; GCP not a target use) |
| ISPE GAMP 5 2nd ed. | Not analysed (paywalled; not regulator text) |
| Swiss AGIT CSV V4.0 | Analysed (validation guideline) |
| Swiss AGIT Archiving of Electronic Raw Data V3.0 | Analysed |
| Swiss AGIT Acquisition and Processing of Electronic Raw Data V3.0 | Analysed |
| OECD No. 15, No. 17 Suppl. 1, No. 25 | Analysed |
| EMA GCP computerised systems guideline (2023) | Analysed (main text sec. 4-6.11; sec. 6.12 and Annexes 1-4 not read in detail) |
| PIC/S PI 011-3 | Analysed (sections 19-20, audit trail and backup; PI 041 preferred) |
| Swiss AGIT IT Service Providers V2.0, Change Management V2.0 | Analysed |
| GDPR | Analysed (Official Journal text, Arts. 4, 5, 17, 25, 30, 32) |
| EU AI Act | Analysed (Official Journal text, Arts. 12, 19, 26(6)) |
| eIDAS / ZertES, RFC 3161 | Not analysed (out of scope; electronic signatures not provided) |
| OECD GLP FAQ | Not analysed (not obtained) |
This page describes design intent. It is not legal advice and it is not a third-party approval of the product.
Three steps, no changes to your target systems.
Only the base URL changes. Authentication by mTLS and/or token.
Who, what, when and why, with the request body stored the way you choose: hash only (default), redacted or full.
If a record is deleted or the chain is broken, it stops and alerts, saying which record and when. Review and archive tools help QA.
mcp2mcp, mcp2api, api2mcp, api2api, mcp2llm, api2llm.glp_approve (MCP) or POST /_glp/approve (HTTPS); only approved authorises the call.These materials support your own validation process; your organisation remains responsible for validating its use.
Start free with Community. Pro is the paid edition for larger deployments, demo on request.
| Capability | Community: free, MIT, available now (v0.4.0) | Pro: demo on request |
|---|---|---|
| Channels | MCP and HTTPS: mcp2mcp, mcp2api, api2mcp, api2api, mcp2llm, api2llm | Yes |
| Reverse proxy, TLS, mTLS and/or token auth | Yes | Yes |
| Audit trail | Tamper-evident, fail-closed hash chain (schema 1.3.0). Every record is RFC 8785 canonical JSON, hash-chained with SHA-256. | + signed records |
| Optional human approval | An approver records approved, reviewed or rejected with glp_approve (MCP) or POST /_glp/approve (HTTPS); only approved authorises the call. | Yes |
| Audit storage | JSONL | PostgreSQL and SQL Server stores |
| Body storage | Hash only (default), redacted or full | Yes |
| Review & archive | Review command, archive manifests, hash-chained run log for offline runs | + WORM archiving to S3 Object Lock, SIEM |
| Regulatory report | Offline command | + reports |
| Validation | Open traceability matrix and OQ runner | Full IQ/OQ validation pack |
| Enterprise | — | SSO, approvals |
| Tests | 240 automated tests | — |
| Flyer | Download flyer (PDF, EN) · ES | — |
| Hello-world guides | Step by step: stdio → proxy → stdio / stdio → proxy → HTTPS / HTTPS gateway | — |
| How to get it | PyPI / GitHub / Release v0.4.0 / MCP Registry | Paid edition, demo on request: Request a Pro demo |
A short demo on one workflow with the tools you already own.
GxP Gateway Audit (package mcp-glp-audit-proxy) is designed to support GLP/GxP, 21 CFR Part 11 and EU GMP Annex 11 workflows and complements your systems' own audit trail. It does not by itself guarantee regulatory compliance and does not replace the validation of your systems, which remains the responsibility of the user organisation. This page describes design intent. It is not legal advice and it is not a third-party approval of the product.
© Antonio Castellon · [email protected]