
ComplyEdge TrustLint: offline EU AI Act compliance checks
io.github.ComplyEdge由 GitHub 帳號 ComplyEdge 發布v0.2.22更新於 Oct 30, 2026
Offline TrustLint checks: EU AI Act Article 5, Article 50, GPAI, plus GDPR and HIPAA.
發布方自己的服務:Edge Network
概覽
離線 TrustLint MCP 伺服器,讓助理依歐盟 AI 法案、GDPR 與 HIPAA 規則檢查提示詞與輸出,並附上法條引用。
- 可以做什麼
- 以內建 TrustLint 規則檢查文字,回傳 PASS/FAIL 與附引用的發現
- 列出可用規則,可依司法管轄區篩選
- 在生成前掃描提示詞,回傳 SAFE 或 RISK_DETECTED
- 可選用託管沙箱檢查,回傳 BLOCKED 或 ALLOWED 且不留紀錄
- 適用情境
- 適合希望助理在生成前後篩檢提示詞或模型輸出是否觸及歐盟 AI 法案(第 5 條、第 50 條、GPAI)、GDPR 或 HIPAA 議題,並顯示對應法條依據,同時不把文字送到託管服務的情境。
- 執行需求
- 以本機 stdio 程序執行,從 PyPI 安裝(complyedge 加 mcp 擴充,或透過 npx 使用 npm 套件)。三個核心工具不需要 API 金鑰。只有在設定 COMPLYEDGE_API_KEY 時才會出現可選的 sandbox_check 工具;在託管端點上則需用戶端以 Authorization Bearer 標頭送出自身金鑰。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ComplyEdge TrustLint: offline EU AI Act compliance checks,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
ComplyEdge Python SDK
Prove what your AI decided, without keeping what it saw. Every request and answer is checked against open EU AI Act rules that cite the law: one record per decision, never a copy of the text.
Choose the Right Package
complyedge is the Python client for the hosted ComplyEdge runtime API. It
enforces policy decisions in your application and records the resulting
evidence trail. For an offline command-line linter with no API key, use
TrustLint instead.
Installation
Quick Start: EU AI Act in Three Lines
That's it. Every input and output is checked against the EU AI Act rule set (Article 5, Article 50, GPAI). Every check gets a record with an event_id, the rules that fired (if any), a timestamp and a keyed hash of the text. A block by a rule also gets its legal citation. On a paid plan the injection check can also block when the month's model budget covers it, and that block names the law. A wider-review block does not cite an article. If that review is on and clears every hit, the request is allowed. decision_context is optional: without it every check still runs and is recorded, but the record does not meet ADCR class Record (see Tell the record what only you know). With the default fail mode, open, an API outage lets traffic through unchecked and unrecorded; set COMPLYEDGE_FAIL_MODE=closed, or pass config=ComplianceConfig(fail_mode="closed"), to raise ComplianceUnavailableError instead. Without an API key the decorator always runs the function unchecked.
Classifiers (eu-ai-act-* MCPs) score the system. ComplyEdge checks and records this prompt or output. Article 50 here is unlabeled or deceptive use, not C2PA watermarking.
Each line is an alternative; pick the one you need.
OpenAI Agents extra (hosted path; needs COMPLYEDGE_API_KEY): from complyedge.agents import create_compliance_guardrail
GitHub Action: uses: complyedge/trustlint-action@v1
The decorator reads your API key from the COMPLYEDGE_API_KEY environment variable by default. Pass api_key_env="MY_VAR" to use a different one.
Multi-Jurisdiction Enforcement
jurisdiction is where the end user is, not where your company is based: the EU AI Act applies when an AI system's output is used in the EU, wherever the provider or deployer is established (Art. 2(1)(c)). Default: EU.
On a paid plan, a clean pass then runs an injection check when the month's model budget covers it, which can block. The wider review runs only when you turn it on and that budget covers it.
HIPAA, COPPA, TCPA, BIPA, CCPA, NYC LL144 and ECPA rules, and the GDPR YAML rules (consent, data minimisation, DPIA, erasure, breach notification, transfers), run offline in TrustLint (pip install trustlint), not on the hosted /v1/check path. The hosted personal data and secrets rules above cite GDPR Articles 5(1)(c) and 32(1).
Per-rule scoping (e.g. only Article 5) is planned but not yet exposed in the SDK: all rules for the selected jurisdiction run today.
Additional Installation Options
Client API: Without the Decorator
Record who each check acts for
Every audit record has user_id, user_role and session_id. They are filled
only when you send them; leave them out and those columns are blank in your
audit export.
ComplyEdgeClient.check_compliance() and the async client take the same three
keyword arguments; they override the same keys in context. Use a stable
identifier from your own system, never a name or an email address. user_id
and session_id are stored as keyed pseudonyms (p1:...) under your account's
own key, not as sent; user_role is stored as sent, so it must name a role, not
a person.
Never send a credential in these fields: a login token, session cookie, JWT or
API key would sit in every audit record and export. If your session id doubles
as a login token, send a hash of it (for example the first 16 hex characters of
its SHA-256). ComplyEdge replaces any token- or key-shaped value with
redacted: plus a hash before the record is written.
Prove a record was about a given text
ComplyEdge never stores the prompt or the answer. The record keeps text_hash, a
keyed hash (HMAC-SHA-256) of the input under your account's own key, so it cannot
be recomputed locally. Keep the event_id next to your own copy of the text, and
ask the API when you need to prove the pair:
Optional: pass receipt_journal="/var/lib/app/complyedge-receipts.jsonl" to
ComplyEdge(...) (or use ReceiptJournal yourself) to append event_id,
text_hash, and digests locally after each non-sandbox check. The journal never
stores the prompt; your app log still holds the text.
The full walkthrough, including what happens if you delete your copy early: https://complyedge.io/docs/audit-reconciliation.html
result.text_hash_alg is "hmac-sha256-1";
records written before the keyed hash was introduced carry none and hold a plain
SHA-256, which verify_input also checks.
Tell the record what only you know
The audit record can carry fields ComplyEdge cannot know: the version of your AI
system, the purpose of the processing and the categories of personal data the
decision used. Pass them as decision_context; they are written to the record as
ADCR 0.1.0 fields (https://complyedge.io/producer-profile/). decision_context is
optional: without it the check runs and is recorded, but the record does not meet
ADCR class Record. When you send it, deciding_system.version, purpose_ref and
data_categories ([] when none) are required; every other key is optional.
check(), is_safe(), the global check() and is_safe(), check_compliance()
and the decorator (a dict, or a zero-argument function read on every call) all
take it.
Try a case without recording it
sandbox=True calls POST /v1/sandbox/check: the same rules, the same tenant
settings and the same verdict, but no audit entry, no usage and no count against
your plan's daily limit (sandbox calls have their own caps: 60 a minute, 1,000 a day). Use it to test cases before wiring an integration. A sandbox result is
never evidence: result.sandbox is True and result.audit_logged is False.
Or the global convenience functions:
Rotating your key
Keys are shown once, at creation, and stored as a hash: a lost key cannot be recovered, only replaced. Rotate without downtime, in this order:
- In the dashboard, open API Key and click Rotate key on the card (or Rotate on a row under Other active keys), then confirm. A new key is minted and shown once; the old one keeps working.
- Put the new key in your integration (
COMPLYEDGE_API_KEYor theapi_keyyou pass to the client) and deploy. - Back in the reveal, click Revoke previous key. Requests with the old key fail from that moment. If you need more time, Keep both for now and revoke it later from the API Key page, where every active key is listed.
Compromised key: revoke first (Revoke this key on the card, or Revoke on the
row), then rotate. Via the API the same flow is POST /v1/account/api-keys,
then DELETE /v1/account/api-keys/{key_id} for the old key.
Company name on the public trust surface
Your public AI Trust Center and Enforcement Seal show one company name: the
one set in the dashboard under Account, Profile. display_name on
PATCH /v1/tenant/trust sets the same value, so an API call and the profile
never disagree. Email is your sign-in and cannot be changed from the dashboard.
Regions
Two regions, one home per account, chosen when you sign up and create your first API key: EU
(eu.api.complyedge.io, key prefix ce_eu_) or US (api.complyedge.io, key
prefix ce_). The SDK reads the prefix and picks the host. To change the
region later, use Request a region change in the dashboard; you get a new key for it.
base_url, region, COMPLYEDGE_API_URL, and COMPLYEDGE_REGION only
choose which host to call. They do not change the account's region.
The region is where your checks run and your audit records are stored. The prompt and the AI's answer are never stored. On a paid plan, after the phrase rules pass, the injection check sends that text to OpenAI in the US when the month's model budget covers it. The wider review sends it only when you turn it on and the month's model budget covers it.
It does not decide which laws are checked: the jurisdiction field on each
check does. No general law requires either region. US law does not require US
storage, and GDPR allows transfers outside the EU with safeguards such as
standard contractual clauses (Chapter V). Choose the region your own contracts
or customers ask for.
To override, highest precedence first: base_url= (or COMPLYEDGE_API_URL),
then region="us" | "eu" (or COMPLYEDGE_REGION), then the key prefix, then EU. A key
presented to the other region's stack is refused with
401 {"detail": {"error": "wrong_region", "use": "<host>"}} before any lookup.
MCP Server: Use ComplyEdge as an AI Agent Tool
Agent/MCP tools that check prompts and outputs against ComplyEdge’s TrustLint corpus with cited findings: not another EU AI Act risk-tier chatbot and not a law-search database.
Hosted Streamable HTTP (preferred for remote clients):
https://mcp.complyedge.io/mcp
Local stdio for any MCP-compatible host (Claude, Cursor, Inspector):
Add to your MCP client config (e.g. claude_desktop_config.json):
(command/args with python -m complyedge.mcp_server is also valid.)
Exposed tools (TrustLint offline YAML rule set):
No API key is required for these tools. The optional extra installs mcp and
trustlint (engine + bundled rules). This MCP path does not run the REST API
policy engine.
Optional hosted sandbox. Set COMPLYEDGE_API_KEY in the server's
environment and a fourth tool appears:
Without the key the tool is not listed and the server stays fully offline.
On the hosted server (https://mcp.complyedge.io/mcp) sandbox_check is
always listed and works only for a caller that sends its own key as the
Authorization: Bearer <key> header on the MCP connection (set it in your MCP
client's headers). The key is never a tool argument and never logged; the
hosted server keeps no keys.
Documentation
來源:sdks/python/README.md,提交 8134ded
工具
0版本歷史
5- v0.2.22最新Oct 30, 2026
- v0.2.21Oct 29, 2026
- v0.2.20Oct 25, 2026
- v0.2.19Oct 1, 2026
- v0.2.18Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Edge 整合
Edge Network
network.edge官方發布者
Edge Network 雲端平台的遠端 MCP 伺服器:助理可在同一個帳號上部署網站與應用程式、管理虛擬機器、儲存桶、DNS 以及 Shield/Assist 元件。

Historical Edge
由 GitHub 帳號 joachimglassell-ship-it 發布
遠端 MCP 伺服器,依受支持的研究與時間跨度回傳預先計算、可溯源的歷史股票研究統計資料。

Edge Actors: email verifier, DNS facts, URL to Markdown
由 GitHub 帳號 EdgeF-4 發布
由 Apify 託管的遠端 MCP 伺服器,在你的 Apify 帳戶上提供電子郵件驗證、SPF/DMARC/MX DNS 查詢與網頁轉 Markdown 功能。

Betting Edge — NFL Elo Research
由 GitHub 帳號 FedX19 發布
遠端 MCP 伺服器,提供封存的 NFL Elo 預測、賠率比較、評分、校準與公開戰績,供博彩研究使用。

ValuEdge Stock Research MCP
由 GitHub 帳號 kkfir13 發布
唯讀的股票研究伺服器,讓助理使用 ValuEdge 的搜尋、公允價值、基本面、比較與篩選工具,並檢視登入使用者自己的投資組合、自選股與提醒。