PrivacyPill
GDPR cookie banners with Consent Mode v2, plus a free scan of what loads before consent.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"privacypill": {
"url": "https://privacy-pill-consent-studio.lovable.app/mcp"
}
}
}遠端端點
https://privacy-pill-consent-studio.lovable.app/mcpstreamable-http它能做什麼
工具清單
工具(9)
🟢pre_consent_scan(url)
Free, no sign-in: fetch a public page as a first-time visitor and report which trackers (GA4, Google Ads, Meta Pixel, TikTok, LinkedIn, Hotjar…) and cookies load before the visitor consents, which ones wait, which other sites the page contacts (e.g. Google Fonts), and how to fix it. Static check of the HTML and headers (no JavaScript runs). Limited to 10 checks per hour per visitor.
輸入結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 3,
"maxLength": 2048,
"description": "Public page to check, e.g. https://example.com"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_account
Show the signed-in PrivacyPill account: number of sites, licenses (Free, Pro, Lifetime) and limits.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_sites
List the domains (sites) on the PrivacyPill account with their plan, site key and last scan score.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_site(site_id)
Get one site with its full cookie banner settings (layout, colours, categories, Consent Mode, languages).
輸入結構描述
{
"type": "object",
"properties": {
"site_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site id from list_sites or create_site."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_site(domain, name, design, license_id)
Add a domain to PrivacyPill and create its cookie banner. Returns the site, its banner settings and the embed snippet. The free plan includes one site.
輸入結構描述
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"minLength": 3,
"maxLength": 253,
"description": "Bare domain such as example.com (no https://)."
},
"name": {
"description": "Friendly name shown in the dashboard.",
"type": "string",
"maxLength": 80
},
"design": {
"description": "Optional starting banner settings; see configure_banner for the fields.",
"type": "object",
"properties": {
"preset": {
"description": "Apply a built-in colour preset (see GET /presets).",
"type": "string",
"enum": [
"mint",
"slate",
"paper",
"lagoon",
"sand",
"contrast"
]
},
"layout": {
"type": "string",
"enum": [
"pill",
"bar",
"modal",
"corner"
]
},
"side": {
"type": "string",
"enum": [
"left",
"right"
]
},
"theme": {
"type": "object",
"properties": {
"bg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"fg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accentFg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"radius": {
"type": "number",
"minimum": 0,
"maximum": 40
},
"btnRadius": {
"type": "number",
"minimum": 0,
"maximum": 999
},
"font": {
"type": "string",
"maxLength": 160,
"pattern": "^[\\w\\s,'\"\\-.]+$"
},
"size": {
"type": "number",
"minimum": 12,
"maximum": 18
},
"shadow": {
"type": "boolean"
},
"buttons": {
"type": "string",
"enum": [
"outline",
"soft",
"text"
]
}
}
},
"equal": {
"description": "Give Accept and Reject equal visual weight.",
"type": "boolean"
},
"reopen": {
"description": "Show a small button to reopen preferences.",
"type": "boolean"
},
"categories": {
"type": "object",
"properties": {
"analytics": {
"type": "boolean"
},
"marketing": {
"type": "boolean"
},
"functional": {
"type": "boolean"
}
}
},
"services": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"necessary",
"analytics",
"marketing",
"functional"
]
},
"additionalProperties": {
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"maxLength": 120
}
}
},
"gcm": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"wait": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"redact": {
"type": "boolean"
},
"passthrough": {
"type": "boolean"
}
}
},
"languages": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
}
},
"defaultLang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
},
"autoLang": {
"type": "boolean"
},
"overrides": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
},
"additionalProperties": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 120
},
"body": {
"type": "string",
"maxLength": 600
},
"accept": {
"type": "string",
"maxLength": 40
},
"reject": {
"type": "string",
"maxLength": 40
},
"customize": {
"type": "string",
"maxLength": 40
}
}
}
},
"policyUrl": {
"type": "string",
"maxLength": 500
},
"expiryDays": {
"type": "integer",
"minimum": 1,
"maximum": 395
},
"reloadOnWithdraw": {
"type": "boolean"
}
},
"additionalProperties": false
},
"license_id": {
"description": "Attach a Pro or Lifetime license from get_account.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"domain"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡configure_banner(site_id, design, name, domain, geo_targeting, ...)
Update a site's cookie banner: layout (pill, bar, modal, corner), colours or preset, categories, services, Google Consent Mode v2, languages and wording. Only the fields you pass change. Pro sites can also switch geo-targeting and monthly rescans.
輸入結構描述
{
"type": "object",
"properties": {
"site_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site id from list_sites or create_site."
},
"design": {
"description": "Banner fields to change; nested objects merge.",
"type": "object",
"properties": {
"preset": {
"description": "Apply a built-in colour preset (see GET /presets).",
"type": "string",
"enum": [
"mint",
"slate",
"paper",
"lagoon",
"sand",
"contrast"
]
},
"layout": {
"type": "string",
"enum": [
"pill",
"bar",
"modal",
"corner"
]
},
"side": {
"type": "string",
"enum": [
"left",
"right"
]
},
"theme": {
"type": "object",
"properties": {
"bg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"fg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"accentFg": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"radius": {
"type": "number",
"minimum": 0,
"maximum": 40
},
"btnRadius": {
"type": "number",
"minimum": 0,
"maximum": 999
},
"font": {
"type": "string",
"maxLength": 160,
"pattern": "^[\\w\\s,'\"\\-.]+$"
},
"size": {
"type": "number",
"minimum": 12,
"maximum": 18
},
"shadow": {
"type": "boolean"
},
"buttons": {
"type": "string",
"enum": [
"outline",
"soft",
"text"
]
}
}
},
"equal": {
"description": "Give Accept and Reject equal visual weight.",
"type": "boolean"
},
"reopen": {
"description": "Show a small button to reopen preferences.",
"type": "boolean"
},
"categories": {
"type": "object",
"properties": {
"analytics": {
"type": "boolean"
},
"marketing": {
"type": "boolean"
},
"functional": {
"type": "boolean"
}
}
},
"services": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"necessary",
"analytics",
"marketing",
"functional"
]
},
"additionalProperties": {
"maxItems": 40,
"type": "array",
"items": {
"type": "string",
"maxLength": 120
}
}
},
"gcm": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"wait": {
"type": "number",
"minimum": 0,
"maximum": 5000
},
"redact": {
"type": "boolean"
},
"passthrough": {
"type": "boolean"
}
}
},
"languages": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
}
},
"defaultLang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
},
"autoLang": {
"type": "boolean"
},
"overrides": {
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"nl",
"es",
"it"
]
},
"additionalProperties": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 120
},
"body": {
"type": "string",
"maxLength": 600
},
"accept": {
"type": "string",
"maxLength": 40
},
"reject": {
"type": "string",
"maxLength": 40
},
"customize": {
"type": "string",
"maxLength": 40
}
}
}
},
"policyUrl": {
"type": "string",
"maxLength": 500
},
"expiryDays": {
"type": "integer",
"minimum": 1,
"maximum": 395
},
"reloadOnWithdraw": {
"type": "boolean"
}
},
"additionalProperties": false
},
"name": {
"type": "string",
"maxLength": 80
},
"domain": {
"description": "Change the domain (bare domain).",
"type": "string",
"minLength": 3,
"maxLength": 253
},
"geo_targeting": {
"description": "Pro: only show the banner where consent law applies.",
"type": "boolean"
},
"monthly_rescan": {
"description": "Pro: rescan the site automatically every month.",
"type": "boolean"
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_embed_snippet(site_id)
Get the one-line PrivacyPill embed (with Consent Mode fallback) for a site, plus install steps for HTML, Google Tag Manager, WordPress, Shopify and Webflow.
輸入結構描述
{
"type": "object",
"properties": {
"site_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site id from list_sites or create_site."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢run_compliance_scan(url, site_id, apply)
Scan a public web page for trackers (GA4, Google Ads, GTM, Meta Pixel, Hotjar, TikTok, LinkedIn…), cookies and Consent Mode setup, and get a 0–100 compliance score. Scans of your own domains are saved; apply=true adds the detected services to that site's banner.
輸入結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 3,
"maxLength": 2048,
"description": "Page URL, e.g. https://example.com"
},
"site_id": {
"description": "Save the scan to this site (otherwise matched by domain).",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"apply": {
"description": "Add detected services and cookie names to the site's banner.",
"type": "boolean"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢list_banner_presets
List the built-in banner colour presets and the allowed layouts, languages and categories.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}社群
證據