Skip to main content
Glama

Server Details

Add a cookie consent banner that blocks trackers before consent and records proof of consent.

Ownership verified
Status
Healthy
Uptime
99.7% over 57 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4/5.0

Scored across 8 tools

Disambiguation3/5

Most tools have genuinely different jobs, and the descriptions work hard to steer selection (preview vs. real install, reference vs. live values). However, demo.explainConfigKey is an exact functional duplicate of help.explainConfigKey, and demo.generateSnippet vs. install.getSnippet share a very similar output shape, so an agent must read long prose to pick correctly.

Naming Consistency3/5

The namespace.prefix pattern (demo.*, help.*, install.*) is applied uniformly, which is good. But the verb style varies within it: parallel operations are named generateSnippet vs. getSnippet, and authStatus is a bare noun with no verb, so the pattern is readable rather than predictable.

Tool Count4/5

Eight tools is well within a sensible range for a consent-management onboarding surface, and each covers a distinct step (signup, install, preview, design, auth, reference). One of them is a deprecated alias that earns no place and should be removed.

Completeness3/5

The acquisition/install path is fully covered, but the entire account.* management surface referenced throughout the descriptions (getDesign, previewDesignChange, updateDesign) is absent from this set, so an agent asked to read or change a live banner's settings hits a dead end. Preview, reference and install exist; the manage lifecycle does not.

Available Tools

8 tools
demo.explainConfigKeyOBSOLETE — renamed to help.explainConfigKeyA
Read-only
Inspect

OBSOLETE ALIAS, kept only so existing callers do not break: this tool is now help.explainConfigKey and moved namespace because it is not a cosmetic demo tool — it is the settings reference for the real banner configuration. It still works and returns exactly the same answer. Call help.explainConfigKey instead; this name will be retired.

NameRequiredDescriptionDefault
keyNoOne key to explain. Accepts a bare name (`blocking`, `bodyText`, `bannerBackground`) or a dotted path exactly as the preview tools take it (`config.blocking`, `config.regulations.gdpr`, `design.primaryColor`, `text.bodyText`, `consentConfig.*`). Every match is returned when a bare name exists in more than one vocabulary.
listNoEnumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`, plus preview-only keys that must never go in the page), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description usefully adds lifecycle context: it is kept for backwards compatibility, returns exactly the same answer, and will be retired. It stops short of describing the shape of the returned explanation, which is the one behavioral gap for a tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The deprecation status is front-loaded and the key facts (obsolete, still works, use the other name, will be retired) arrive in order. There is mild redundancy in restating that it still works and returns the same answer, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deprecated alias with full schema coverage and no output schema, the description covers everything an agent needs: identity, equivalence, and the correct replacement. Only the return shape is left implicit, which is minor given the tool simply forwards to help.explainConfigKey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (key, list) carry rich, self-contained descriptions including enum semantics and usage hints, so the description correctly does not repeat them. Baseline 3 is appropriate since the description adds no parameter meaning of its own.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's identity and function plainly: an OBSOLETE ALIAS that is now the settings reference for the banner configuration, and it names the exact replacement (help.explainConfigKey) so an agent can distinguish it from that sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing: "Call `help.explainConfigKey` instead; this name will be retired," while also noting the alias still works for existing callers. Both the when-to-use (legacy callers only) and the preferred alternative are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo.generateSnippetGenerate a Hu-manity consent-banner preview snippetA
Read-only
Inspect

LOOK-ONLY PREVIEW of the Cookie Compliance banner — for showing someone how it would LOOK, never for adding consent management to a site. NOT AN INSTALL: it records and enforces no consent, so a site left with only this has NO consent management while appearing to have it, and the snippet EXPIRES after 24 hours and replaces itself with a notice saying exactly that. Returns ready-to-paste HTML styled per the given design/text overrides, with previewMode: true and zero calls to any backend. The preview uses the v1 banner layout. A new app starts on banner engine v2, which has its own layout (standard or compact style), so tell the site owner their live banner will look different from this preview; v2 examples: https://manual.hu-manity.co/gallery/v2/. To actually add consent management to a site use install.getSnippet (needs an AppID) or help.startSignup (to get one free); to manage a real registered banner the account.* tools need an authenticated connection — call help.explainTokenSetup. Never accepts a real appID and never emits previewMode: false.

NameRequiredDescriptionDefault
textNoPartial overrides of huOptions.text.en.
designNoPartial overrides of huOptions.design (see help.explainConfigKey for valid keys).
blockingNo
globalCookieNo
currentLanguageNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true; the description goes far beyond that, disclosing that nothing is recorded or enforced, that the snippet expires after 24 hours and replaces itself with a notice, that there are zero backend calls, that it never accepts a real appID, and that it never emits previewMode: false. These are exactly the behavioral traits an agent cannot infer from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical warning (LOOK-ONLY PREVIEW, NOT AN INSTALL) is front-loaded and the expiration caveat follows immediately. It is dense and somewhat long, but nearly every sentence carries distinct, load-bearing information; only the v2 gallery URL is arguably marginal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of explaining the return value (ready-to-paste HTML, previewMode: true) and all its safety caveats. The remaining gap is parameter-level: with 5 params at 40% schema coverage and nested objects, the three undocumented flags leave an agent unable to reason about blocking/globalCookie behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40% and the description adds essentially nothing new: 'styled per the given design/text overrides' merely restates the schema's own 'Partial overrides of huOptions.text.en/design' descriptions. Three of the five parameters (blocking, globalCookie, currentLanguage) are undocumented in both the schema and the description, so the low-coverage gap is not compensated for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate... preview snippet'), names the exact artifact returned (‘ready-to-paste HTML’ with previewMode: true), and explicitly says what it is NOT ('NOT AN INSTALL', 'never for adding consent management'). It clearly distinguishes itself from install.getSnippet and the demo.* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternatives and the condition that selects each: install.getSnippet (needs an AppID) or help.startSignup for real installation, account.* tools for managing a registered banner, and help.explainTokenSetup for auth. It also gives the when-not ('never for adding consent management to a site').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo.suggestDesignMake the consent banner match a site — derive and check its designA
Read-only
Inspect

THE TOOL TO USE when the banner needs to look like the site it sits on. Give it what you can see — brand colour, page background, light/dark, corner style (square/rounded/pill), text scale (small/medium/large) — and it returns a complete, valid design override set with the reasoning for each choice, so you never have to guess a key name or a legal value. It also validates design values you already have, and checks every colour pair a visitor must actually read (body text and headings on the banner background, and button labels on the brand colour) against WCAG AA, picking body text colours by measured contrast and button labels white whenever white reaches 4.5:1 (otherwise the more legible colour). Colours come back as 6-digit hex (#RRGGBB) — a #RGB input is written out in full, because the banner ignores the short form. Themes: light/dark. A font is never derived: pass design.fontFamily (site/sans-serif/serif/system) only when the site owner has chosen one. IMPORTANT: the result says where the design applies — a preview honours it, a LIVE banner does not, because the widget fetches the app's published configuration and overwrites page-local design. To change a real banner use account.previewDesignChange then account.updateDesign, which need an authenticated connection — call help.explainTokenSetup. To see the design on a page without an account, pass it to demo.generateSnippet; to install the real banner use install.getSnippet.

NameRequiredDescriptionDefault
brandNoFacts about the site's own look. Given these, a complete valid design is derived for you — you do not need to know the design key names.
designNoExplicit huOptions.design overrides to validate. Applied on top of anything derived from brand.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true annotation is consistent with a tool that derives and validates rather than mutates. The description adds substantial behavioral context beyond annotations: WCAG AA contrast checking, measured body-text selection, white button labels when they reach 4.5:1, #RGB-to-#RRGGBB normalization, theme inference, no font derivation, and the important preview-versus-live limitation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and every major clause supports a real decision or caveat. It is long and dense, but the length is mostly justified by the derivation, validation, contrast, and routing details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex read-only derivation and validation tool with no output schema, the description covers what is returned, how colors are normalized, how contrast is checked, and where the resulting design applies. It also explains the important limitation that live banners ignore page-local design overrides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the brand fields are already documented. The description still adds useful semantics not in the schema, especially the allowed design.fontFamily values (site/sans-serif/serif/system), the role of brandColor as button/accent, and the theme inference from pageBackground.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and action: derive and validate a consent-banner design override set matching a site. It distinguishes itself from siblings by explicitly naming demo.generateSnippet, install.getSnippet, account.previewDesignChange, and account.updateDesign for the alternative workflows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance and routes the agent to alternatives based on conditions: use demo.generateSnippet to preview without an account, install.getSnippet to install the real banner, and account.previewDesignChange plus account.updateDesign to change a live banner. It also flags the authentication prerequisite for the account path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

help.authStatusCheck whether this connection is actually authenticated, and as whatA
Read-only
Inspect

THE TOOL TO USE before assuming a connection is authenticated. account.* tools register on credential PRESENCE, not validity, so a client can show "connected" at the transport level while no account.* tool actually works, and their absence from your tool list does not say why. This makes the one real check — the same credential exchange account.* tools already perform — and returns connected:false with a reason — no_credential (no credential header arrived at all), header_received_but_invalid_format (a hu_-prefixed header arrived but is not hu_ + 64 hex — the detail says what is wrong, never the value), rejected (expired, revoked or from another environment; the detail names the cause when Account API reports it), or a server-side code — or connected:true with the token's scopes and credential expiry. Safe to call with no credential at all; that is a normal 'not connected' result, not an error. Never accepts or echoes the token itself.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, but the description goes far beyond that: it enumerates the exact failure reasons (no_credential, header_received_but_invalid_format, rejected, server-side), states that calling with no credential is a normal result not an error, and guarantees the token value is never accepted or echoed. This is rich disclosure the annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the key instruction, and every sentence carries substantive content. It is dense and somewhat verbose in the parenthetical reason-code enumeration, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully covers return shape (connected:true/false, scopes, expiry) and the meaning of each reason code. Nothing an agent needs to interpret or safely call the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description correctly notes it is safe to call with no credential at all, but there is no parameter surface to elaborate on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — verify whether the connection is actually authenticated and as what — and distinguishes it from the account.* tools whose credential-presence check it supersedes. An agent can tell exactly what this tool does and why it differs from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly frames when to call it ('THE TOOL TO USE before assuming a connection is authenticated') and explains the trap it guards against: account.* tools register on credential presence, not validity, so their absence from the tool list is not diagnostic. The condition and the alternative are both named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

help.explainConfigKeyLook up any banner setting — what it does, and whether changing it is a compliance decisionA
Read-only
Inspect

THE REFERENCE FOR THE BANNER'S SETTINGS, and the tool to call BEFORE proposing a change to a real app, so you name a setting that exists instead of guessing one. Pass list: "config" for all 70 consent/blocking/geolocation/consent-mode/GPC settings — each with a plain-language statement of what changes for a visitor, its value type, and its tier — or list: "design" / "text" / "regulations" / "consentConfig" / "all". Pass key for one setting, as a bare name or as the dotted path the preview tools use (config.blocking, config.regulations.gdpr, text.bodyText). It tells you WHICH pair of account.* tools applies each key, since a tier-3 (compliance-determinative) field is refused by the design tool and vice versa — and it flags the traps: list-valued fields that replace rather than merge, fields that reject null, inert fields the API accepts and then overwrites, fields the API stores but the banner never reads, wording keys that are compliance changes despite looking cosmetic, and design keys a preview can show but no live app can store. Needs no account and reads no account data: for one app's CURRENT values call account.getDesign (authenticated — see help.explainTokenSetup).

NameRequiredDescriptionDefault
keyNoOne key to explain. Accepts a bare name (`blocking`, `bodyText`, `bannerBackground`) or a dotted path exactly as the preview tools take it (`config.blocking`, `config.regulations.gdpr`, `design.primaryColor`, `text.bodyText`, `consentConfig.*`). Every match is returned when a bare name exists in more than one vocabulary.
listNoEnumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`, plus preview-only keys that must never go in the page), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint, but the description adds substantial behavioral context: it reads no account data and needs no account, it reports which account.* tool pair applies each key, and it flags concrete traps (list-valued fields that replace rather than merge, null-rejecting fields, inert fields the API overwrites, stored-but-unread fields, preview-only design keys). That is real disclosure beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, but the delivery is essentially two very long sentences, the second of which packs the tier-routing rule and a seven-item trap list into one run-on. Every clause carries information, but the structure could be broken up for faster scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only two optional params, the description fully covers what a caller needs: what each mode returns (key vs whole vocabulary), the key-path formats, the compliance tier caveat, and the hand-off to account.getDesign for live values. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3; the description adds meaning on top by explaining the tier-3 vs design-tool refusal relationship and that bare names may match across vocabularies, and it names most of the list enum values. It omits 'snippet' from its own enumeration, which the schema covers, so it is additive but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it is 'THE REFERENCE FOR THE BANNER'S SETTINGS', explaining one key or enumerating a whole vocabulary. It distinguishes itself from the sibling demo.explainConfigKey (no account) and from account.getDesign (current values for one app), so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing and alternatives: call it BEFORE proposing a change so you name a setting that exists, start with list: "config" to find the right setting, and use account.getDesign (authenticated) when you need one app's current values. When/when-not and the alternative are both spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

help.explainTokenSetupExplain how the customer gets an API token to connect their real accountA
Read-only
Inspect

Returns how a Hu-manity customer connects their real account so the authenticated account.* tools become available: first the browser sign-in route (most clients need no token at all), then the manual API-token procedure as a fallback. Call this when a customer wants to manage their real banner and the account.* tools are not available. Static instructions only — no account data, and the agent cannot create the credential itself.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover readOnlyHint=true, and the description adds genuinely useful context beyond them: it is static instructions only, returns no account data, and the agent cannot create the credential itself. It does not describe pagination/format, but for a static help tool this is solid disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the returned content front-loaded and the usage trigger second; no filler. The first sentence is dense but every clause (sign-in route vs. token fallback) carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description adequately characterizes the return (the browser sign-in route followed by the manual token procedure) without needing to enumerate structure. Combined with the no-account-data and agent-cannot-create notes, an agent has what it needs to answer and set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the description has no parameters to explain. Per the rubric, zero-parameter tools baseline at 4; no parameter information is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the procedure for connecting a real account so account.* tools become available, and it names the exact outcome (browser sign-in first, manual API token as fallback). It reads distinctly from help.authStatus (status), but overlapping with help.startSignup is not explicitly addressed, so differentiation is strong-but-not-perfect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'Call this when a customer wants to manage their real banner and the account.* tools are not available.' That is a clear precondition, though it never names a competing sibling (e.g. help.startSignup) or states when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

help.startSignupTurn a demo prospect into a real Hu-manity accountA
Read-only
Inspect

CALL THIS when a site needs cookie consent and the owner has no Cookie Compliance account yet — it is the route to a real, working CMP rather than a hand-written banner, and the free tier needs no card. Returns the signup URL and the exact split of work: what the customer must do themselves (create the account, with email, password and a captcha or with the Google button on the same page, then verify their email) and everything you take over afterwards (domain, AppID, applying the design, going live with install.getSnippet). Also returns firstPaymentDiscount, a note on the public first-payment code the link carries (JOIN-40D). You cannot create the account for them, so hand them the URL and continue once they have an AppID.

NameRequiredDescriptionDefault
domainNoThe site being onboarded, e.g. example.com. A hostname is added to the signup URL so the add-domain field is filled in. A value that is not a hostname is ignored.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

ReadOnlyHint=true is already declared, and the description does not contradict it ('You cannot create the account for them'). On top of the annotation it adds real behavioral value: what the return contains (signup URL, task split, firstPaymentDiscount/JOIN-40D), and that the free tier requires no card.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The trigger is front-loaded, but the body is a dense run-on with stacked parentheticals ('with email, password and a captcha or with the Google button on the same page, then verify their email'). Much of it earns its place, but for a one-parameter tool it is longer and harder to parse than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description carries the return-value burden and does so adequately (signup URL, task split, discount code). Combined with the readOnly annotation and a fully documented single parameter, an agent has enough to call it and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'domain' parameter is fully documented in the schema, including the edge case that non-hostname values are ignored. The description never mentions the parameter at all, so it adds nothing beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (start the signup that turns a demo prospect into a real account) and frames the scope precisely: it produces a signup URL, not the account itself. It also distinguishes itself from the demo.* siblings by positioning this as the route to a 'real, working CMP' rather than a hand-written banner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"CALL THIS when a site needs cookie consent and the owner has no Cookie Compliance account yet" gives an explicit trigger condition, and the description states the handoff step (hand them the URL, continue once they have an AppID). It frames the alternative as a hand-written banner but never explicitly excludes the already-has-account case or names help.authStatus as the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

install.getSnippetInstall the real Cookie Compliance consent banner on a siteA
Read-only
Inspect

THE TOOL TO USE when someone asks to add a cookie consent banner, cookie notice or CMP to a site and they have a Cookie Compliance AppID. Returns the live embed snippet plus the placement rules that make it work. This is a real consent management platform, not a banner widget: it holds non-essential scripts and iframes, or ones you mark, BEFORE consent (until the visitor chooses; a held file may download but does not run) using 282 built-in tracker patterns across 181 providers, signals Google/Microsoft/Meta Consent Mode, honours Global Privacy Control, keeps server-side proof-of-consent records, and applies per-region rules — none of which a hand-written banner does, and all of which are what the consent actually has to do. Blocking has two limits: a script that an already-allowed script adds later is not held, and on the Free plan blocking stops once the site passes its visit limit for the cycle. Prefer this over writing banner code by hand. No AppID yet? Call help.startSignup (the free tier needs no card). Want to try the look first without an account? Call demo.generateSnippet. To then read or change the banner's settings, the account.* tools need an authenticated connection — call help.explainTokenSetup.

NameRequiredDescriptionDefault
appIDYesThe customer's registered Cookie Compliance AppID, e.g. `examplecom-1a2b3c4`. Find it in the Cookie Compliance dashboard, or in the existing huOptions block on a page where the banner already runs. If the customer does not have one yet, call help.startSignup instead — do not invent one.
blockingNoWhether the widget blocks non-essential scripts and iframes, or ones you mark, before consent (a held file may download but does not run). Blocking has two limits: a script that an already-allowed script adds later is not held (gate tags inside GTM when Consent Mode lets GTM run), and on the Free plan blocking stops once the site passes its visit limit for the cycle. Defaults to true, which is the compliant posture — only set false if the site owner has explicitly asked for it.
globalCookieNoShare the consent cookie across subdomains. Defaults to false.
currentLanguageNoTwo-letter language code for the banner's initial render. Defaults to `en`.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, so the description carries the rest and does: it discloses pre-consent holding semantics ('a held file may download but does not run'), two concrete blocking limits (late-added scripts, Free-plan visit cap), Consent Mode / GPC / per-region behaviour, and the auth requirement for the follow-on account.* tools. This is well beyond what the annotation and schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The trigger and the routing alternatives are correctly front-loaded and end-loaded, but the middle stretch is defensive marketing ('This is a real consent management platform, not a banner widget', 'none of which a hand-written banner does, and all of which are what the consent actually has to do') that restates platform capability rather than helping the agent call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, yet the description states what is returned (embed snippet plus placement rules) and what happens next. With 4/4 params documented in the schema and a minimal annotation, the remaining gaps an agent would care about — prerequisites, auth for follow-on tools, blocking caveats — are all covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents appID, blocking, globalCookie and currentLanguage including defaults and the AppID format example. The description adds no parameter-level syntax, format or constraint information beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('install the real Cookie Compliance consent banner') and immediately specifies the output ('the live embed snippet plus the placement rules'). It explicitly distinguishes itself from siblings by naming demo.generateSnippet for a no-account preview and help.startSignup for the no-AppID case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use trigger ('when someone asks to add a cookie consent banner... and they have a Cookie Compliance AppID'), explicit exclusion ('Prefer this over writing banner code by hand'), and named alternatives for each adjacent scenario (help.startSignup, demo.generateSnippet, account.* + help.explainTokenSetup). Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changeddemo.explainConfigKey1 field changed
      • changedInput schema / properties / list / description
        Previous value: -"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."New value: +"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`, plus preview-only keys that must never go in the page), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."
    • Changedhelp.explainConfigKey1 field changed
      • changedInput schema / properties / list / description
        Previous value: -"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."New value: +"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`, plus preview-only keys that must never go in the page), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."
  2. 1 tool update
    • Changedhelp.startSignup1 field changed
      • changedInput schema / properties / domain / description
        Previous value: -"The site being onboarded, e.g. example.com. Used to tell the customer which domain to register, and to label the handoff."New value: +"The site being onboarded, e.g. example.com. A hostname is added to the signup URL so the add-domain field is filled in. A value that is not a hostname is ignored."
  3. 3 tool updates
    • Changeddemo.explainConfigKey1 field changed
      • changedInput schema / properties / list / description
        Previous value: -"Enumerate a whole vocabulary instead of explaining one key: `config` (the 69 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."New value: +"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."
    • Changedhelp.explainConfigKey1 field changed
      • changedInput schema / properties / list / description
        Previous value: -"Enumerate a whole vocabulary instead of explaining one key: `config` (the 69 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."New value: +"Enumerate a whole vocabulary instead of explaining one key: `config` (the 70 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC."
    • Changedinstall.getSnippet1 field changed
      • changedInput schema / properties / blocking / description
        Previous value: -"Whether the widget blocks non-essential scripts and iframes before consent. Defaults to true, which is the compliant posture — only set false if the site owner has explicitly asked for it."New value: +"Whether the widget blocks non-essential scripts and iframes, or ones you mark, before consent (a held file may download but does not run). Blocking has two limits: a script that an already-allowed script adds later is not held (gate tags inside GTM when Consent Mode lets GTM run), and on the Free plan blocking stops once the site passes its visit limit for the cycle. Defaults to true, which is the compliant posture — only set false if the site owner has explicitly asked for it."
  4. 4 tool updates
    • Changeddemo.explainConfigKey3 fields changed
      • changedInput schema / properties / key / description
        Previous value: -"A huOptions.design.* or huOptions.text.en.* key to explain."New value: +"One key to explain. Accepts a bare name (`blocking`, `bodyText`, `bannerBackground`) or a dotted path exactly as the preview tools take it (`config.blocking`, `config.regulations.gdpr`, `design.primaryColor`, `text.bodyText`, `consentConfig.*`). Every match is returned when a bare name exists in more than one vocabulary."
      • addedInput schema / properties / list
        Added value: +{
        +  "description": "Enumerate a whole vocabulary instead of explaining one key: `config` (the 69 BannerConfigJSON settings, each with its tier and consequence), `regulations`, `consentConfig`, `design`, `text`, `snippet` (the huOptions keys that go in the page, including `blocking`), or `all`. Use this to find out WHICH setting does what you want before naming one — start with `config` for anything about consent categories, geolocation, consent mode or GPC.",
        +  "enum": [
        +    "config",
        +    "regulations",
        +    "consentConfig",
        +    "design",
        +    "text",
        +    "snippet",
        +    "all"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "key"
        -]
    • Changeddemo.generateSnippet1 field changed
      • changedInput schema / properties / design / description
        Previous value: -"Partial overrides of huOptions.design (see demo.explainConfigKey for valid keys)."New value: +"Partial overrides of huOptions.design (see help.explainConfigKey for valid keys)."
    • Addedhelp.authStatus
    • Addedhelp.explainConfigKey
  5. 6 tool updates
    • First observeddemo.explainConfigKey
    • First observeddemo.generateSnippet
    • First observeddemo.suggestDesign
    • First observedhelp.explainTokenSetup
    • First observedhelp.startSignup
    • First observedinstall.getSnippet

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to install GDPR-compliant cookie consent banners on websites with a single command, handling domain registration, template assignment, and script injection.
    17 npm
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to run EU cookie-consent audits on public websites, checking pre-consent trackers, banner rejection behavior, Consent Mode v2, IAB TCF, GPC, undisclosed cookies, and third-party embeds, with findings, evidence, fixes, and legal references.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables auditing one or many websites from an EU address for cookie consent behavior, returning per-domain rows on the consent platform, first-layer reject availability, trackers and tracking cookies before consent and after reject, and Global Privacy Control response. Runs the work on Apify and hands back the dataset rows through a single tool.
    1
    141 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources