Skip to main content
Glama

Check BIMI Logo Setup

check_bimi
Read-onlyIdempotent

Use this when the user asks how to get their logo shown in Gmail, Yahoo, Apple Mail or other inboxes (BIMI), whether their BIMI setup works, or why their logo does not show. A live read of one host's BIMI setup: the DMARC gate (BIMI needs p=quarantine or p=reject; dmarc_sources names each policy read and why it does or does not count), the published default._bimi record, the logo (fetched and checked as SVG Tiny PS) and any certificate (certificate.trust_verified is true for a mark certificate for this host, in date, chaining to a Mark Verifying Authority root, false with trust_reason when not, null when the check could not run; revocation is not checked). mailboxes is ELIGIBILITY per mailbox, never a promise that a logo will show: each mailbox decides, Gmail and Apple Mail also need a VMC or CMC certificate, and Outlook does not support BIMI. Pass logo_url (and optionally certificate_url) to check a candidate logo: generated.record is then the exact record to publish at generated.host — present it verbatim. generated.record is null while DMARC is not at enforcement: relay generated.rationale and never compose a BIMI record yourself. status unknown means a lookup or download failed (try again), never that the setup is broken. next_step is the one thing to do next. Observation only: nothing is published.

Input Schema

NameRequiredDescriptionDefault
domainYesThe domain to check, e.g. example.com. Bare registrable names and subdomains both work; scheme, path or port do not belong here. Unicode names are accepted and normalized to punycode.
logo_urlNoOptional https:// URL of a candidate SVG logo (port 443, no spaces, ; or ,). When given, that logo is checked instead of the published one and generated carries the BIMI record for it. Omit it to check what the domain already publishes.
certificate_urlNoOptional https:// URL of the VMC or CMC certificate (PEM) for the candidate logo, added to the record as a=. Only used together with logo_url.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description goes further: it discloses the DMARC enforcement gate, the exact semantics of certificate.trust_verified (true/false/null plus trust_reason, revocation unchecked), that mailboxes is eligibility and not a promise, that Outlook does not support BIMI, that status unknown means a failed lookup rather than a broken setup, and that nothing is published. This is unusually rich behavioral context.

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 user-facing triggers, then the mechanics, then the caveats in roughly priority order. It is dense rather than wasteful, but the paragraph is long and a few clauses (e.g., the mailbox eligibility list) could be tightened without losing meaning.

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 read-only diagnostic with an output schema, the description covers the gaps that matter: how to interpret generated.record, generated.host, status, next_step, and certificate trust fields. An agent knows how to invoke it, when to retry, and how to relay results verbatim without inventing a BIMI record.

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 a baseline of 3 applies, but the description adds real meaning: logo_url causes the candidate logo to be checked instead of the published one and makes generated carry the record for it, and certificate_url is only meaningful together with logo_url. That cross-parameter dependency is beyond what the schema states.

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 ('A live read of one host's BIMI setup') and enumerates exactly what it inspects: the DMARC gate, the default._bimi record, the logo, and the certificate. It is unmistakably distinct from siblings like check_record or validate_dmarc_record, so an agent can route to it 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?

Opens with concrete trigger conditions ('when the user asks how to get their logo shown in Gmail... whether their setup works, or why their logo does not show') and adds a conditional mode: pass logo_url to check a candidate, omit it to check what is published. It also tells the agent what to do when generated.record is null (relay rationale, do not compose a record yourself).

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.