The Brandfetch MCP connector routes your AI agent's tool calls to Brandfetch's own MCP server through Scalekit. Each user signs in to Brandfetch once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 8 tools.
- Tools
- 8
- What they doRead · write · destructive
- 7 · 1 · 07 read1 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Brandfetch MCP connection
In AgentKit > Connections, create a Brandfetch MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Brandfetch MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'brandfetchmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Brandfetch MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'brandfetchmcp_brand_search',toolInput: { query: 'Madame Kim' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "brandfetchmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Brandfetch MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"query":"Madame Kim"},tool_name="brandfetchmcp_brand_search",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolbrandfetchmcp_brand_searchSearch for brands by name using Brandfetch's search index.Read-onlySearch Brands
Search for brands by name using Brandfetch's search index. Use this when you do NOT already know the brand's domain — for example, when the user gives a brand name with ambiguous or unknown domain ("Madame Kim", "the raclette brand", "starbuks"), or a name that could map to multiple companies ("Delta" — airline? faucets? dental?). For raw bank or card transaction strings, use enrich_transaction instead. Returns a ranked list of matches. Each match contains: - `brandId` (str): Brandfetch's internal ID. - `domain` (str): The brand's primary domain. Pass this to `get_brand` to fetch full details. - `name` (str): Display name. - `icon` (str): CDN URL to a small representation of the brand, suitable for autocomplete-style UIs. Display-only: embed it as returned (e.g. in an `<img>` tag) — it is not programmatically fetchable, and must not be edited. For other asset types, sizes, or downloadable bytes, call `get_brand`; for display-only variants, `build_logo_urls`. - `claimed` (bool): Whether the brand has officially claimed their listing. Claimed brands generally have higher-quality, brand-approved assets. - `verified` (bool): Whether Brandfetch has verified the listing. - `qualityScore` (float, 0–1): Completeness of the brand data. - `_score` (float): Search relevance for this query; higher = better match. Use to rank results; not comparable across different queries. Results are already sorted by relevance; the first result is usually the best match for well-known brands.
Inputs
querystringrequired- Brand name query string (e.g. "Madame Kim", "Nike").
brandfetchmcp_build_logo_urlsConstruct Brandfetch Logo CDN URLs for one or more brands.Read-onlyBuild Logo URLs
Construct Brandfetch Logo CDN URLs for one or more brands. No API call is made — returns ready-to-embed URL strings. **HOTLINKING POLICY — read before using these URLs:** URLs returned by this tool are subject to Brandfetch's hotlinking policy. They are intended for direct browser rendering only (e.g. `<img src="...">` in an HTML page). Programmatic fetching or downloading of these assets — such as HTTP GET requests from a server or script using only the clientId embedded in the URL — will be blocked and return an error. If the session has no clientId at all, the URLs are built without a `?c=` token and the result is `{"urls": [...], "warning": "..."}` instead of a plain list — those URLs cannot be fetched programmatically under any circumstances. If you need to actually download or process an asset (save to disk, read pixel data, attach to an email, etc.), use `get_brand` instead. The CDN URLs embedded in `get_brand` responses carry per-request credentials that allow programmatic access. Use this tool when you want to: - Embed brand logos directly in a web page or UI component - Provide a displayable image URL to the user - Understand the URL grammar to tune dimensions, theme, or asset type for logos already obtained via `get_brand` Accepts multiple identifiers in a single call to avoid repeated round trips. All identifiers share the same display options (type, theme, dimensions, fallback). The returned list is in the same order as the input.
Inputs
identifiersarrayrequired- List of brand identifiers (domains, tickers, ISINs, or crypto symbols). All must be the same type if identifier_type is set.
fallbackstring- CDN behavior when asset is missing. "lettermark" only valid
with type="icon". "404" returns HTTP 404 instead of a placeholder.default
404 heightstring- Height in pixels. Aspect ratio always preserved.
identifier_typestring- Explicit identifier routing. Omit for auto-detection.
themestring- "light" or "dark" for theme-specific variants. Omit for default.default
dark typestring- Asset type â "icon", "logo", or "symbol". Default "icon".one of
iconlogosymboldefaulticon widthstring- Width in pixels. Aspect ratio always preserved.
brandfetchmcp_enrich_transactionIdentify a merchant brand from a credit card or bank statement string.Read-onlyIdentify Merchant from Transaction
Identify a merchant brand from a credit card or bank statement string. Uses AI-based matching to resolve abbreviated, truncated, or cryptic transaction labels (e.g. "SQ *COFFEE SHOP 4412", "AMZN MKTP US") to a brand. Use this when the input is a raw statement line rather than a clean brand name. Returns brand data matching the shape from `get_brand` (domain, name, logos, colors, etc.) for the identified merchant, or an error if no confident match is found. URLs in the response carry per-request credentials — use them exactly as returned, never edited (same rule as `get_brand`). Examples: - transaction_label: "STARBUCKS GENEVA", country_code: "CH" - transaction_label: "AMZN MKTP US", country_code: "US" - transaction_label: "IKEA", country_code: "CH" - transaction_label: "SQ *BLUE BOTTLE", country_code: "US" Errors: - 429: API quota exhausted. Do not retry — `brand_search` and `build_logo_urls` do not consume quota and keep working.
Inputs
country_codestringrequired- ISO 3166-1 alpha-2 country code where the transaction occurred (e.g. "CH", "US"). Use "US" as a fallback when unknown.
transaction_labelstringrequired- The raw text from a credit card or bank statement (e.g. "STARBUCKS GENEVA", "AMZN MKTP US").
brandfetchmcp_get_brandLook up full brand data by domain, stock ticker, ISIN, or crypto symbol.Read-onlyGet Brand Details
Look up full brand data by domain, stock ticker, ISIN, or crypto symbol. Call this directly when you have a confident identifier — either from a prior `brand_search` result, or from your own knowledge for well-known brands (e.g. you can call `get_brand("coca-cola.com")` directly without searching first). If the identifier is uncertain or the brand is obscure, use `brand_search` first to disambiguate. The identifier is auto-resolved in this order: domain → ticker → ISIN → crypto. Examples (all Nike): "nike.com", "NKE", "US6541061031". For crypto: "BTC", "ETH". For clean brand name lookups, prefer brand_search followed by get_brand — those are more reliable for unambiguous queries. Returns a brand object containing: - `name`, `domain`, `description`: Core identity. - `logos` (list): Typed visual assets. The `type` field distinguishes: * `logo`: The full brand mark, typically a wordmark or wordmark+symbol combination intended for headers, signatures, and contexts with horizontal space (e.g. "Coca-Cola" in script). * `symbol`: The standalone graphical mark without text, used when the brand is already identified by context (e.g. the Nike swoosh alone). * `icon`: A square, compact representation optimized for small sizes — favicons, app icons, avatars, list items. May be the symbol, an initial, or a simplified mark. * `other`: Anything that doesn't fit the above (mascots, seals, etc.). Pick by use case, not by name: a "show me the logo" request from a user usually wants `type: "logo"` for display, but `type: "icon"` for a small UI element like a list row or chat avatar. - `colors` (list): Brand colors as `{hex, type, brightness}` where `type` is `primary` | `accent` | `dark` | `light` | `brand`. - `fonts` (list): `{name, type, origin, originId}`. - `links` (list): Social and web links as `{name, url}`. - `company`: Metadata including `industries`, `employees`, `foundedYear`, `location`, and `kind` (public | private | etc.). **IMPORTANT — use all URLs exactly as returned:** Every URL in the response (logo `src` fields, image URLs, etc.) must be used verbatim. Do not modify, rewrite, or substitute any part of them — including the `?c=` query parameter. That token is a per-request credential issued by the API specifically for this response; replacing it with any other client ID (including one from context or memory) will break the URL. To download asset bytes, fetch the `src` URL directly (curl/requests) whenever your environment can reach cdn.brandfetch.io — that keeps the bytes out of the conversation. Otherwise fall back to the `resource_link` blocks this tool returns (`bf://asset/{domain}/{type}`), or to `get_asset_base64` — see that tool for the claude.ai network-allowlist details. Errors: - 403 / "explicit deny": The brand exists in the index but is not accessible on the current API tier or has access restrictions. Do not retry — fall back to displaying the `icon` URL from `brand_search` (display-only, not downloadable) or inform the user. - 404: Identifier not found. Try `brand_search` with a name query instead. - 429: API quota exhausted. Do not retry — `brand_search` and `build_logo_urls` do not consume quota and keep working. If the returned data is visibly wrong or stale (wrong logo, outdated colors, missing company info), report it with send_feedback (category "data-quality"), including the brand's domain.
Inputs
identifierstringrequired- A domain ("nike.com"), a website URL on one ("https://www.nike.com/en/help"), an email address at one ("owner@acme.example" resolves to the brand behind acme.example), a ticker ("NKE"), an ISIN ("US6541061031"), or a crypto symbol ("BTC").
viewstring- The aspect of the brand the user asked about â ALWAYS set this when they name one, so the interactive card opens on the right tab: colors ('their colors', 'brand palette') â 'colors'; fonts/typography â 'fonts'; logo/icon â 'logos'; banners/imagery â 'images'; company info/description â 'about'; brand voice/tone/personality â 'brand_voice'. Omit only for general brand lookups. Never changes the returned data.
brandfetchmcp_get_brand_contextGet LLM-ready brand context for a known domain — voice, audience, positioning, style.Read-onlyGet Brand Context
Get LLM-ready brand context for a known domain — voice, audience, positioning, style. This is the *subjective* counterpart to `get_brand`. Use the two together by what kind of data you need: - `get_brand` → objective, structured facts: logos, colors, fonts, links, industry, employee count, founding year. Use when rendering UI, building a profile card, or citing firmographics. - `get_brand_context` (this tool) → probabilistic, interpretive data: how the brand sounds, who it talks to, what it values, what it sells, how it feels visually. Use when generating content, reasoning about fit, or grounding an LLM in a brand's identity. Both take the same domain and can be called in parallel when you need both. USE THIS WHEN: writing copy in a brand's voice, generating on-brand product descriptions, classifying whether content fits a brand, summarizing a company for a pitch, picking a target audience for a campaign, or describing a brand's aesthetic in words. For obscure or ambiguous brand names, run `brand_search` first to resolve the canonical domain, then call this with the result. Returns JSON with: - `meta.domain`, `meta.canonical_name`, `meta.resolved_at`: the resolved brand and when the context was generated. If `canonical_name` differs from what the user said (e.g. user said "MS", canonical is "Microsoft"), surface that. - `identity.tagline`, `identity.mission`: the brand's own words — quote verbatim, do not paraphrase. - `identity.description`: a neutral 1–2 sentence summary, safe to paraphrase. - `identity.tags`: short category labels for routing or classification. - `positioning.value_proposition`: use as headline framing in marketing or pitch contexts. - `positioning.target_audience[]`: distinct segments, each with its own description. Pick the segment that matches the user's task — do not blend them into a generic "everyone." - `positioning.products_and_services[]`: each entry has `name`, `type` ("product" | "service"), and `description`. Use to ground specific claims and avoid hallucinating offerings the brand doesn't have. - `brand.voice.summary`: prose description of the brand's tone, suitable as a system-prompt preamble when generating copy. - `brand.voice.attributes`: positive descriptors (e.g. "warm", "witty"). - `brand.voice.avoid`: anti-patterns. Treat as hard constraints when generating copy, not soft preferences — if the list says "avoid hype", do not write hype. - `brand.style`: visual/design vibe in words (e.g. "clean, dense, utilitarian"). Useful for image-generation prompts or describing the brand's aesthetic. For actual color codes, fonts, or logo files, call `get_brand` instead. Note that this is generated content — language may occasionally be flowery or non-English. Treat it as a strong starting point, not gospel. If the context is clearly wrong for the brand (wrong company, hallucinated products, non-English output), report it with send_feedback (category "data-quality"), including the domain. Errors: - 503: Service temporarily unavailable. Retry once after a brief delay. If it persists, fall back to `get_brand` for the objective subset and tell the user that subjective brand context is currently unavailable. - 404: No context available for this domain. Try `brand_search` to find a canonical domain, then retry. - 403: Authentication, access tier, or exhausted-credits issue. Do not retry; surface to the user. - 429: API quota exhausted. Do not retry — `brand_search` and `build_logo_urls` do not consume quota and keep working.
Inputs
domainstringrequired- The brand's exact domain, lowercase, no scheme or path (e.g. "microsoft.com", "digitec.ch", "fleurdepains.ch"). If you only have a brand name, call `brand_search` first.
brandfetchmcp_get_brand_dataFetch a brand's data by domain, website URL, email address, stock ticker, ISIN, or crypto symbol â as data, with no interactive card.Read-onlyGet Brand Data
Fetch a brand's data by domain, website URL, email address, stock ticker, ISIN, or crypto symbol â as data, with no interactive card. Same lookup, same response and same credentialed asset URLs as `get_brand`. Use this when the data FEEDS A TASK rather than a display: - several brands â logo walls, comparison tables, customer or partner slides, lists of companies: call `get_brands` once with all of them instead. Call this tool for a brand whose full record you need (`get_brands` returns a compact one), or once per brand (calls can run in parallel) when `get_brands` is refused for the plan, - generating content or code from brand data â HTML/CSS using the brand colors, a deck or document embedding the logo, design tokens, on-brand copy, - programmatic processing â fetching asset bytes from the `src` URLs, extracting a palette, reading a company's industry, size or founding year, - context for yourself â understanding what a company does before answering; pair with `get_brand_context` for voice, audience and positioning. If the user's goal is to SEE one brand â its logo, colors or profile in the conversation â or to download or copy an asset themselves, call `get_brand` instead: on claude.ai and Claude Desktop it renders an interactive card with preview, download and copy-URL actions, which beats pasting URLs into text. Call this directly when you have a confident identifier â either from a prior `brand_search` result, or from your own knowledge for well-known brands (e.g. "coca-cola.com" needs no search first). If the identifier is uncertain or the brand is obscure, use `brand_search` first to disambiguate. The identifier is auto-resolved in this order: domain â ticker â ISIN â crypto. Examples (all Nike): "nike.com", "NKE", "US6541061031". For crypto: "BTC", "ETH". An identifier that contains "@" is read as an email address and resolved to the brand behind its registrable domain: an address at nike.com gives Nike. Mailbox-provider domains resolve like any other domain. You judge whether the domain is the contact's company â the API does not. A website URL is read as the brand behind its host ("https://www.nike.com/en/help" â Nike, and "nike.com/en/help" without a scheme too): scheme, "www.", path and query all fall away, so pass the URL you have rather than trimming it yourself. For clean brand name lookups, prefer brand_search followed by this tool â those are more reliable for unambiguous queries. Returns a brand object containing: - `name`, `domain`, `description`: Core identity. - `logos` (list): Typed visual assets. The `type` field distinguishes: * `logo`: The full brand mark, typically a wordmark or wordmark+symbol combination intended for headers, signatures, and contexts with horizontal space (e.g. "Coca-Cola" in script). * `symbol`: The standalone graphical mark without text, used when the brand is already identified by context (e.g. the Nike swoosh alone). * `icon`: A square, compact representation optimized for small sizes â favicons, app icons, avatars, list items. May be the symbol, an initial, or a simplified mark. * `other`: Anything that doesn't fit the above (mascots, seals, etc.). Pick by use case, not by name: a "show me the logo" request from a user usually wants `type: "logo"` for display, but `type: "icon"` for a small UI element like a list row or chat avatar. - `colors` (list): Brand colors as `{hex, type, brightness}` where `type` is `primary` | `accent` | `dark` | `light` | `brand`. - `fonts` (list): `{name, type, origin, originId}`. - `links` (list): Social and web links as `{name, url}`. - `company`: Metadata including `industries`, `employees`, `foundedYear`, `location`, and `kind` (public | private | etc.). **IMPORTANT â use all URLs exactly as returned:** Every URL in the response (logo `src` fields, image URLs, etc.) must be used verbatim. Do not modify, rewrite, or substitute any part of them â including the `?c=` query parameter. That token is a per-request credential issued by the API specifically for this response; replacing it with any other client ID (including one from context or memory) will break the URL. To download asset bytes, fetch the `src` URL directly (curl/requests) whenever your environment can reach cdn.brandfetch.io â that keeps the bytes out of the conversation. On claude.ai a blocked fetch means `*.brandfetch.io` is missing from the code-execution network allowlist (Settings > Capabilities): tell the user to add it â or, on Team/Enterprise plans, to ask an Owner/Admin â before generating anything that embeds brand images; the experience is much better with it. Clients that support MCP resource reads can otherwise use the `resource_link` blocks this tool returns (`bf://asset/{domain}/{type}`). Errors: - 403 / "explicit deny": The brand exists in the index but the plan behind the API key has no API credits, or the key lacks access. Do not retry â fall back to displaying the `icon` URL from `brand_search` (display-only, not downloadable) and tell the user to check their plan. Account state, not a bug: never report it with send_feedback. - 404: Identifier not found. Try `brand_search` with a name query instead. - 429: API quota exhausted for the billing period. Do not retry â `brand_search` and `build_logo_urls` do not consume quota and keep working. Account state, not a bug: never report it with send_feedback. If the returned data is visibly wrong or stale (wrong logo, outdated colors, missing company info), report it with send_feedback (category "data-quality"), including the brand's domain.
Inputs
identifierstringrequired- A domain ("nike.com"), a website URL on one ("https://www.nike.com/en/help"), an email address at one ("owner@acme.example" resolves to the brand behind acme.example), a ticker ("NKE"), an ISIN ("US6541061031"), or a crypto symbol ("BTC").
brandfetchmcp_get_brandsFetch several brands in one call: up to 25 identifiers, one compact record per brand, no interactive card.Read-onlyGet Brands
Fetch several brands in one call: up to 25 identifiers, one compact record per brand, no interactive card. For a longer list, call it again with the rest; calls can run in parallel. Use this whenever a task involves two or more brands â a logo wall, a comparison table, customer or partner slides, a list of companies to enrich: one call with all of them, not one `get_brand_data` call per brand. Use `get_brand_data` for a single brand or for a brand's full record, and `get_brand` when the user wants to see one brand. Batch lookups need a paid plan or prepaid credits. On a free plan the call is refused and nothing is charged: fetch the brands with `get_brand_data` instead, one call per brand (calls can run in parallel). Each identifier is read the way `get_brand_data` reads one â a domain, a website URL on it, an email address at it, a stock ticker, an ISIN or a crypto symbol, auto-resolved in the order domain â ticker â ISIN â crypto. Set `identifier_type` when every identifier is of one kind: an exchange-suffixed ticker such as "BHP.AX" is otherwise read as a domain. For a name whose domain you are unsure of, use `brand_search` first. Returns JSON `{"results": [...]}` with one entry per identifier, in the order sent, each carrying the `identifier` and a `status`: - 200: `brand` is a compact record â `id`, `name`, `domain`, `claimed`, `description`; `logos`, the brand's `logo`, `symbol` and `icon` assets (types as in `get_brand_data`), each with its `theme` and `formats` (`format`, `src`, and `width`/`height` for raster files); `colors` (`hex`, `type`); `fonts` (`name`, `type`, `origin`); and `company` (`employees`, `foundedYear`, `kind`, `location`, `industries` by name). Banners and other images, social links, the long description and logos of type `other` are left out: call `get_brand_data` for a brand when the task needs them. - 202 (`code` "crawl_queued"): not indexed yet. Brandfetch has queued it for indexing, so ask for these again later; they are also listed in `askAgainLater`. To get one of them now, call `get_brand_data` with it, which crawls a new brand while it waits. - 400: not a valid identifier; `message` says why. - 404: no brand for this identifier. Try `brand_search` with the company's name. - 413, 500, 504: not answered this time; they are also listed in `retryNow`. Ask for them again â after a 413, in a smaller batch. Each brand returned (200) uses one API credit. Every other result is free, and an identifier repeated in one call â or the same domain spelled twice â is charged once. **IMPORTANT â use all URLs exactly as returned:** Every URL in the response (logo `src` fields, image URLs, etc.) must be used verbatim. Do not modify, rewrite, or substitute any part of them â including the `?c=` query parameter. That token is a per-request credential issued by the API specifically for this response; replacing it with any other client ID (including one from context or memory) will break the URL. To download asset bytes, fetch the `src` URL directly (curl/requests) whenever your environment can reach cdn.brandfetch.io â that keeps the bytes out of the conversation. On claude.ai a blocked fetch means `*.brandfetch.io` is missing from the code-execution network allowlist (Settings > Capabilities): tell the user to add it â or, on Team/Enterprise plans, to ask an Owner/Admin â before generating anything that embeds brand images; the experience is much better with it. Errors that refuse the whole call, with nothing charged: - 403 "paid plan required": use `get_brand_data` once per brand, as above. Account state, not a bug: never report it with send_feedback. - 429: fewer API credits remain than this call could use; the message says how many remain. Ask for at most that many brands, or tell the user to add credits. Account state, not a bug: never report it with send_feedback. - 403 (any other): the plan has no API credits, or the key lacks access. Do not retry; tell the user to check their plan. - 400: the request itself was malformed, e.g. an empty identifier; the message names it. If the returned data is visibly wrong or stale, report it with send_feedback (category "data-quality"), including the brand's domain.
Inputs
identifiersarrayrequired- The brands to fetch, 1 to 25, each identified as for get_brand_data. A domain ("nike.com"), a website URL on one ("https://www.nike.com/en/help"), an email address at one ("owner@acme.example" resolves to the brand behind acme.example), a ticker ("NKE"), an ISIN ("US6541061031"), or a crypto symbol ("BTC").
identifier_typestring- The kind every identifier is, to skip auto-detection â e.g. 'ticker' for a list like ['BHP.AX', 'VOD.L'], which would otherwise be read as domains. With 'domain', pass bare domains rather than URLs or email addresses. Omit it for a mixed list.
brandfetchmcp_send_feedbackSend feedback about the Brandfetch MCP server to the Brandfetch team.WriteSend Feedback
Send feedback about the Brandfetch MCP server to the Brandfetch team. Use this to report anything that would help improve this MCP server: - A tool call failed, timed out, or returned something inconsistent with its documented behavior. - A tool description was confusing or misled you into a wrong call. - Brand data was wrong, stale, or missing (wrong logo, outdated colors, missing company info) — include the brand's domain in the message. - A capability you needed was missing (e.g. a filter, a data field, a whole tool). - The user explicitly asked to send feedback, or expressed praise or frustration about Brandfetch that they want passed along. Write feedback the way you would want to receive a bug report: what you were trying to do, the exact tool call and arguments, what you expected, and what actually happened. Specific and structured beats polite and vague. Send one call per distinct issue rather than bundling several topics into one message. This is a one-way channel to the Brandfetch team — nobody replies through it. For account or billing help, direct the user to https://developers.brandfetch.com instead. Never include API keys, bearer tokens, or personal data in the message. Returns a JSON acknowledgment: {"status": "received", ...}.
Inputs
messagestringrequired- The feedback text. Plain text or simple markdown; messages longer than ~2900 characters are truncated.
categorystring- One of "bug", "data-quality", "feature-request",
"documentation", "praise", "other". Default "other".one of
bugdata-qualityfeature-requestdocumentationpraiseotherdefaultother tool_namestring- Name of the tool the feedback concerns (e.g. "get_brand"), if it concerns a specific tool.
No tools match.