add_custom_service
ChatGPTDeclare a custom tracking service (one not in the cookie library), with its cookies and category. Use this for proprietary or niche scripts the user identifies manually.
add_geolocation_group_from_template
ChatGPTCreate a new geolocation group seeded from a built-in template. After creation the group is fully editable and independent of the template. Available on all plans.
add_service_cookie
ChatGPTAdd a single cookie row to an existing service. Use this after add_custom_service or import_service to document additional cookies the service sets.
approve_unrecognized_script
ChatGPTCategorize an unrecognized script so it gets blocked correctly until consent. Pass the categoryId it belongs to. If appendBlockingRule is true (the default), the host pattern is also added to site_behavior.blockingRules so the proxy blocks it pre-consent.
check_installation
ChatGPTFetch the site's homepage and verify the ConsentLayer snippet is present in <head> without defer or async. Call this after the snippet has been deployed to confirm the install actually works — do not tell the user the setup is done without it. Falls back to banner-load telemetry for client-rendered apps. Also returns a compliance summary with the remaining action items.
configure_do_not_sell
ChatGPTEnables/disables the CCPA Do Not Sell opt-out surface, sets the link label and the request-form body text, toggles owner email notifications for new requests, and sets the auto-delete retention window for processed requests. Regenerates the banner. Returns the link snippet payload so you can install the link in the same turn.
configure_from_scan
ChatGPTTake a completed scan and automatically create service entries in the right consent categories. setup_site already does this for fresh installs; use this directly when reapplying after a manual scan.
create_category
ChatGPTAdd a custom consent category beyond the defaults (e.g. 'personalization', 'social-media'). Use only when the user explicitly needs a category outside essential/statistics/marketing.
create_geolocation_group
ChatGPTCreate a custom geolocation group. Paid plans only — free plans must use add_geolocation_group_from_template. The overrides map is sparse: only listed fields override site_behavior; missing fields inherit.
create_site
ChatGPTProvision a ConsentLayer site for a domain — auto-creates default banner config and three cookie categories (essential, statistics, marketing). For most installs, call setup_site instead — it does this AND scans + configures + returns the install snippet in one call.
delete_category
ChatGPTDelete a custom category. The three default categories (essential, statistics, marketing) cannot be deleted.
delete_geolocation_group
ChatGPTDelete a geolocation group. Visitors in the matched geo will fall back to site_behavior defaults on next pageview. Reversible — can be re-added from template or re-created from scratch.
delete_service_cookie
ChatGPTRemove a single cookie row from a service. The service itself stays — use remove_service to delete the whole service and its cookies.
delete_site
ChatGPTPermanently delete a site and its configuration — banner config, services, scans, and the banner JS on the CDN. Irreversible. Consent audit records (consent records and do-not-sell requests) are PRESERVED: deletion is refused with an error while any exist; they age out via the plan's retention purge. Requires explicit confirmation: you must pass the site's exact domain as the confirmation parameter. If the agent doesn't know the domain, call list_sites first. Never call this without prior user authorization.
dismiss_unrecognized_script
ChatGPTMark an unrecognized script as ignored. It won't appear in the pending review queue, and future scans won't re-prompt for the same pattern.
export_site_config
ChatGPTExport a site's full configuration as a JSON snapshot — banner design, site behavior, categories, services, cookies, translations, geolocation groups. Use with import_site_config to clone a setup across sites or organizations.
get_banner_config
ChatGPTGet the current banner configuration for a site: template, position, colors, text. Use this before update_banner_config to see what's set.
get_compliance_score
ChatGPTGet the compliance setup score for a site (0–100) with the breakdown of items earned vs. missing. Use after setup to verify the configuration is launch-ready and surface remaining action items to the user.
get_consent_breakdown
ChatGPTBanner counters with accept and reject rates for one site, grouped by a dimension and ordered by impressions: country (two-letter code), template (banner layout), variant (A/B variant name), device (mobile/tablet/desktop), jurisdiction (gdpr/ccpa/lgpd/none), locale (two-letter language), or gpc ('1' = Global Privacy Control signal present). Requires the Studio plan or above; lower plans get upgradeRequired.
get_consent_stats
ChatGPTTotals and rates for one site over a date range. Use page_loads when the user asks about views, pageviews or traffic — impressions counts only the times the banner was actually shown, which is a smaller number. Also returns accepted, rejected, custom_saved, dismissed, ignored and preferences_opened, plus accept_rate, reject_rate, custom_rate, dismiss_rate, ignore_rate and banner_show_rate as fractions of 1. Available on every plan for ranges of one day or longer; ranges under one day require the Studio plan or above. A site with no traffic in the range returns zeroes, not an error.
get_consent_timeseries
ChatGPTThe same banner counters as get_consent_stats, bucketed by day (default) or hour and zero-filled so every bucket in the range is present. Use it for trends — 'is acceptance falling', 'which day spiked', 'chart the last month'. Requires the Studio plan or above; on lower plans it returns upgradeRequired instead of data, and get_consent_stats still gives period totals.
get_cookie_policy
ChatGPTGet the cookie policy page status for a site. Returns enabled, the rendered publishedHtml, publishedAt, and the distribution URLs when enabled: publicUrl (hosted page), fragmentUrl (raw HTML to inline in an SSR/build step), and embedSnippet (a <div> + <script> to paste into any page for a live, self-updating embed). To put the policy on the user's own site, hand them embedSnippet; to link it from the banner, set update_banner_config cookiePolicyUrl (or just leave it — an enabled page is auto-linked).
get_do_not_sell_embed
ChatGPTReturns a div+script snippet that renders the CCPA opt-out request form inside any page of the customer's site (paid plans). Use when asked to embed the do-not-sell / privacy-choices form on a page. For a plain footer link use get_do_not_sell_link.
get_do_not_sell_link
ChatGPTReturn the copy-paste HTML for the CCPA "Do Not Sell or Share My Personal Information" footer link, plus the hosted request-form URL on paid plans, as text for the user to paste into their footer. Read-only: it does not enable the feature or change the website. Use this when the user needs the Do Not Sell / privacy choices link markup. If you don't have the siteId, call list_sites first. If the response says the feature is disabled, call configure_do_not_sell first. For an embeddable request form instead of a link, use get_do_not_sell_embed.
get_library_service
ChatGPTRead everything ConsentLayer knows about a library service: every cookie it sets, durations, descriptions, default category. Use this before importing if the user wants to know what they're declaring.
get_organization_usage
ChatGPTGet current usage vs. plan limits for the authenticated organization (monthly pageviews, monthly consent records, site count). Use to answer 'am I close to my plan limit'. Returns status 'ok' / 'warn' (80%) / 'exceeded' (100%).
get_scan
ChatGPTGet full details of a scan: detected services, unrecognized scripts, errors. Use this to understand what trackers were found before configuring categories.
get_scan_diff
ChatGPTCompare two scans and return added/removed services + cookies. If fromScanId is omitted, diffs against the scan immediately preceding toScanId. Useful for answering 'what changed since last scan'.
get_scan_schedule
ChatGPTRead the auto-scan schedule for a site (enabled, frequency, target URLs, last run, next run). Free plans always show enabled=false. Read-only: it does not create, enable or start a scan. To change the schedule, use update_scan_schedule.
get_setup_snippet
ChatGPTReturn the install code snippet for an existing site, with the real project key embedded, as text for the user to paste into their own code. Supported frameworks: script (plain HTML), react (Vite + React), next (Next.js App Router), astro (Astro), remix (Remix). Read-only: it changes nothing in ConsentLayer and does not install anything on the website. For first-time installs prefer setup_site, which provisions the site AND returns the snippet in one call.
get_site_behavior
ChatGPTRead the behavioral configuration for a site — consent model (opt-in/opt-out), GPC, script/content blocking, button visibility, post-consent floating UI, integrations (Google Consent Mode, Clarity), cookie scope, enabled languages, display rules. Read-only: it changes nothing. To change settings, use update_site_behavior.
get_started
ChatGPTShow the recommended ConsentLayer workflow and list any sites already configured. Call this if you want context before doing anything, or if the user asks 'what's set up so far?'. For the common case ('add ConsentLayer to my site'), prefer setup_site — it does the full install in one call.
import_service
ChatGPTAdd a service from the library (Google Analytics, Meta Pixel, etc.) to a site: the service, all its documented cookies, and the script-blocking rules that stop it loading before consent. Use this when the user mentions a specific service that wasn't picked up by the scan. The site's banner and cookie policy are rebuilt automatically, so the change is live for visitors when this returns. Check blockingRulesAdded before telling the user the service is held back until consent — it is 0 when the service sits in a required category (those always load), when a built-in rule already covers it, or when no script patterns are known for it, and in that last case the service is disclosed but not blocked.
import_site_config
ChatGPTApply a previously exported config snapshot to a site. Categories and services merge by slug; geolocation groups are fully replaced (clean-slate). Regenerates the banner JS after import. Doesn't touch the projectKey or domain.
list_categories
ChatGPTList the consent categories on a site. Default categories: essential, statistics, marketing — these are auto-created and cannot be deleted.
list_consent_records
ChatGPTPaginated list of consent records for a site. Use this to surface recent consent activity. Filters: date range (from/to ISO dates), country (ISO 3166-1 alpha-2), decision ('accepted' | 'rejected' | 'partial'), bannerVersion. Max 100 per page.
list_do_not_sell_requests
ChatGPTPaginated inbox of CCPA Do Not Sell requests for a site (paid plans). Filters: status ('pending' | 'processed'). Includes pendingCount — the CCPA deadline is 15 business days per request. Mark handled requests with process_do_not_sell_request.
list_geolocation_groups
ChatGPTList the geolocation groups configured for a site. Visitors are matched against these by IP at runtime, and the first match's overrides are applied on top of site_behavior.
list_geolocation_templates
ChatGPTList the built-in geolocation group templates (gdpr, ccpa, lgpd). Templates are read-only — to use one, call add_geolocation_group_from_template, which forks it into an editable site-owned group.
list_scans
ChatGPTList the scan history for a site, most recent first.
list_site_services
ChatGPTList every service configured on a site and the cookies each one sets. Use this to show the user what's already declared before adding more.
list_sites
ChatGPTShow every ConsentLayer site in the user's account, with domain and project key, plus the active organization (id + name). Use this to find an existing site before doing further work, or when the user asks 'what sites do I have?'. If an expected site is missing, check the returned organization — the site may belong to a different org than this token.
list_unrecognized_scripts
ChatGPTList scripts detected by the scanner that couldn't be matched to the known service library. The admin (or this MCP) categorizes them via approve_unrecognized_script so future scans auto-classify them.
process_do_not_sell_request
ChatGPTTransitions a Do Not Sell request from pending to processed and stamps processedAt. Call after the customer confirms the opt-out has been honored in their systems.
regenerate_cookie_policy
ChatGPTForce a re-render of the hosted cookie policy page. Normally auto-runs when the banner config changes; use this if the published HTML drifts from the configured services or after a manual data fix.
remove_service
ChatGPTDelete a service and its declared cookies from a site. Use when the user has stopped using a particular tracker.
reorder_geolocation_groups
ChatGPTSet the priority order of geolocation groups for a site. When a visitor's location matches multiple groups, the first one in this list wins. Pass the full list of group IDs in the desired order.
scan_site
ChatGPTScan a configured site for tracking scripts and cookies (Google Analytics, Facebook Pixel, Hotjar, etc.). Use this to refresh detection after the user adds new trackers. For initial install, setup_site already runs a scan.
search_library
ChatGPTSearch the cookie library for known services like Google Analytics, Meta Pixel, Hotjar, Stripe. Returns services you can import into a site to declare their cookies.
send_feedback
ChatGPTReport feedback about ConsentLayer to its maintainers: a confusing error, a tool that returned something other than its description promised, a capability you needed and could not find, or something that worked well. Call it once after hitting friction with another tool, or when the user asks to report a problem or suggestion. The submission is attributed to the authenticated account automatically. Never include API keys, secrets, or the conversation transcript — only what happened and what you expected.
set_cookie_policy_enabled
ChatGPTToggle the hosted cookie policy page on or off. Enabling is gated to the Agency tier; disabling works on any plan. When enabled, the page is hosted at https://api.consentlayer.com/policy/<projectKey>, auto-updates when categories/services/cookies change, and the banner's 'Cookie Policy' link points at it automatically (unless a custom cookiePolicyUrl is set). Call get_cookie_policy afterward for the embed snippet if the user wants the policy on their own site.
setup_site
ChatGPTInstall ConsentLayer on a website end-to-end: provision a site for the domain, scan it for trackers, auto-configure consent categories, and return the install snippet with the real project key embedded. Use this whenever the user wants to add cookie consent / GDPR / CCPA compliance to a site — it does in one call what create_site → scan_site → configure_from_scan → get_setup_snippet does separately. Safe to re-run: for a domain that is already set up it returns that site's snippet instead of creating a duplicate site — but every run does start a new scan, so it is not a no-op.
update_banner_config
ChatGPTUpdate the banner's visual design — template, position, colors, text, privacy policy link, and logo. Behavioral toggles (GPC, script/content blocking, default-allow, button visibility, integrations, languages, display rules) live on site_behavior — use update_site_behavior for those. PATCH semantics: pass only the fields you want to change, and colors/textOverrides merge key-by-key with the current values — sending textOverrides: { acceptLabel: 'OK' } changes only that label and leaves headline/body/rejectLabel/preferencesLabel intact.
update_category
ChatGPTUpdate a consent category's display name and/or description. Works on the three default categories (essential, statistics, marketing) too — defaults are editable, they just can't be deleted. Use this to align category copy with a customer's cookie-policy wording. The slug is a stable identifier services reference and is never changed by this tool; pass only the fields you want to change.
update_geolocation_group
ChatGPTUpdate a geolocation group. overrides is a full replace (empty object = inherit everything from site_behavior).
update_scan_schedule
ChatGPTUpdate the auto-scan schedule for a site. When enabled, ConsentLayer fetches the site's live web pages on each run to detect trackers. Enabling requires a paid plan. urls[] (max 10) overrides the default homepage-only scan. frequency is 'weekly' at launch.
update_service
ChatGPTUpdate a service's display label, description, and per-locale overlays. Category reassignment is not supported via this endpoint — remove and re-add the service if you need to move it between categories.
update_service_cookie
ChatGPTUpdate an individual cookie row — name, duration, description, or per-locale description overlays.
update_site
ChatGPTChange the display name of a site. Does not change the domain or project key.
update_site_behavior
ChatGPTPatch behavioral settings. Pass only the fields you want to change. Fields are sparse — missing keys keep their current value. Changing consent-affecting fields (e.g. enableScriptBlocking, respectGpc, enabledLanguages) bumps consentVersion so visitors are re-prompted.
add_custom_service
Claudeadd_geolocation_group_from_template
Claudeadd_service_cookie
Claudeapprove_unrecognized_script
Claudecheck_installation
Claudeconfigure_do_not_sell
Claudeconfigure_from_scan
Claudecreate_category
Claudecreate_geolocation_group
Claudecreate_site
Claudedelete_category
Claudedelete_geolocation_group
Claudedelete_service_cookie
Claudedelete_site
Claudedismiss_unrecognized_script
Claudeexport_site_config
Claudeget_banner_config
Claudeget_compliance_score
Claudeget_consent_breakdown
Claudeget_consent_stats
Claudeget_consent_timeseries
Claudeget_cookie_policy
Claudeget_do_not_sell_embed
Claudeget_do_not_sell_link
Claudeget_library_service
Claudeget_organization_usage
Claudeget_scan
Claudeget_scan_diff
Claudeget_scan_schedule
Claudeget_setup_snippet
Claudeget_site_behavior
Claudeget_started
Claudeimport_service
Claudeimport_site_config
Claudelist_categories
Claudelist_consent_records
Claudelist_do_not_sell_requests
Claudelist_geolocation_groups
Claudelist_geolocation_templates
Claudelist_scans
Claudelist_site_services
Claudelist_sites
Claudelist_unrecognized_scripts
Claudeprocess_do_not_sell_request
Clauderegenerate_cookie_policy
Clauderemove_service
Claudereorder_geolocation_groups
Claudescan_site
Claudesearch_library
Claudeset_cookie_policy_enabled
Claudesetup_site
Claudeupdate_banner_config
Claudeupdate_category
Claudeupdate_geolocation_group
Claudeupdate_scan_schedule
Claudeupdate_service
Claudeupdate_service_cookie
Claudeupdate_site
Claudeupdate_site_behavior
Claude