Brandfetch MCP

Live

OAUTH 2.1

BRAND ASSETS

Design

Brandfetch resolves any company domain into its logos, colors, fonts, and company detail. Brandfetch MCP gives your agent authenticated access scoped to the user who authorized it.

  • Acts as the user: access and write actions stay tied to the Brandfetch account that authorized the agent.
  • Credentials stay vaulted: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: permissions enforced. 90-day audit trail.
Brandfetch MCP
agent · Acme Q3
Run
Pull the logo and brand colors for acme.com.
S
brandfetch_brand_get
81ms
Brandfetch agent
SVG and PNG logo marks, 3 brand colors with hex values, and 2 fonts, all sourced from acme.com.
Sources: 1 domain, 5 assets
brandfetchmcp
2 calls
18:29
Message Claude...

Tools your design agent reaches for on Brandfetch MCP, scoped per user.

CALL ANY TOOL
Brand assets on demand: search brands, fetch logos, colors, and fonts by domain, and enrich company records from Brandfetch's index.
brandfetchmcp_brand_search
Search brand
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.
Parameters
Name
Type
Required
Description
query
string
Required
Brand name query string (e.g. "Madame Kim", "Nike").
brandfetchmcp_build_logo_urls
Build logo urls
brandfetchmcp_enrich_transaction
Enrich transaction
brandfetchmcp_get_asset_base64
Get asset base64
brandfetchmcp_get_brand
Get brand
brandfetchmcp_get_brand_context
Get brand context
brandfetchmcp_send_feedback
Send feedback
Build your Agent
Drop the toolkit in, point it at the user, and your design agent can use Brandfetch from the first run.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Brandfetch MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["brandfetchmcp"], toolNames: [
"brandfetchmcp_brand_search",
"brandfetchmcp_build_logo_urls",
"brandfetchmcp_enrich_transaction"
] },
pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Pull the logo and brand colors for acme.com." }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Brandfetch MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["brandfetchmcp"], toolNames: [
"brandfetchmcp_brand_search",
"brandfetchmcp_build_logo_urls",
"brandfetchmcp_enrich_transaction"
] },
pageSize: 100,
});

const openai = new OpenAI();
const res = await openai.responses.create({
model: "gpt-5",
tools: tools.map((t) => t.openai),
input: "Pull the logo and brand colors for acme.com.",
});
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Brandfetch MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["brandfetchmcp"], toolNames: [
"brandfetchmcp_brand_search",
"brandfetchmcp_build_logo_urls",
"brandfetchmcp_enrich_transaction"
] },
pageSize: 100,
});

const anthropic = new Anthropic();
const msg = await anthropic.messages.create({
model: "claude-opus-4-6",
max_tokens: 1024,
tools: tools.map((t) => t.anthropic),
messages: [{ role: "user", content: "Pull the logo and brand colors for acme.com." }],
});
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Brandfetch MCP tools, scoped to the signed-in user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["brandfetchmcp"], toolNames: [
"brandfetchmcp_brand_search",
"brandfetchmcp_build_logo_urls",
"brandfetchmcp_enrich_transaction"
] },
pageSize: 100,
});

const agent = new Agent({
name: "brandfetchmcp_agent",
model: "gemini-2.5-pro",
instruction: "Act as the design agent for the signed-in user.",
tools,
});
await agent.run("Pull the logo and brand colors for acme.com.");
Try these prompts
Paste any prompt into your agent to start using Brandfetch.
Asset lookup
Copy the prompt
Copied
Pull the logo and brand colors for acme.com.
Copy the prompt
Copied
Get the SVG logo for each domain in this list.
Copy the prompt
Copied
Which fonts does this company use on its site?
Enrichment
Copy the prompt
Copied
Enrich these 20 domains with company name and industry.
Copy the prompt
Copied
Find the brand record for the company behind this product.
Copy the prompt
Copied
Which of these domains have no brand data?
Design prep
Copy the prompt
Copied
Build a color palette from this company's brand colors.
Copy the prompt
Copied
Fetch light and dark logo variants for the deck.
Copy the prompt
Copied
Check whether this logo is available as an SVG.
SEE HOW AUTH WORKS
Users authorize Brandfetch once. Their credentials stay vaulted, every call is checked, and every action is logged.
1
Authorize
Your user connects
Brandfetch MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Brandfetch MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Brandfetch MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Brandfetch MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
Same per-user auth pattern across other agents and MCP connectors. Working code, live demos, fork what fits.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
People Ops and HR teams
Performance review collector
Collects review feedback from Airtable and Google Forms scoped to each manager's direct reports, writes per-employee summaries to Notion, and DMs the manager a Slack digest.
People Ops and HR teams
Offer letter routing agent
Drafts the offer in PandaDoc, blocks on the hiring manager's approval in Slack, then emails the candidate their e-signature link. Every call runs as the recruiter who triggered it, never a shared HR bot.
Test other agents
Same per-user auth pattern across other agents and MCP connectors. Working code, live demos, fork what fits.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
PEOPLE OPS
Performance review collector agent
Collect review feedback from Airtable and Google Forms per manager, summarise each report in Notion, and DM the digest in Slack.
PEOPLE OPS
Offer letter routing agent
Draft the offer in PandaDoc, gate it on hiring manager approval in Slack, then email the candidate their signature link.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared token looks fine in a demo. In production every call looks like a service account. Scalekit resolves the real user credential so attribution, audit, and scope stay accurate.
// shared token
audit → bot_service_account
user_filter → broken

// scalekit
audit → user_abc
scope → enforced ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Brandfetch today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Brandfetch as the user or as a shared key?
As the user. Each member authorizes once and Scalekit resolves their credential at request time. Audit logs attribute every action to that user, not a shared service account.
Where is the Brandfetch oauth 2.1 credential stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent is allowed to do in Brandfetch?
Yes. Pass a tool name filter to listScopedTools so the design agent only sees the subset you authorize. Pre-API-call scope checks block out-of-policy actions before the request reaches Brandfetch.
What happens when a user revokes Brandfetch access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Brandfetch data is public. Why route it through per-user auth?
Rate limits and billing attach to an account, so a shared key turns one team's bulk enrichment into everyone's throttling. Per-user credentials keep quota, cost, and the audit trail attached to the person whose agent made the call.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""brandfetchmcp"": {
""url"": ""https://mcp.scalekit.com/brandfetchmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.brandfetchmcp]
url = ""https://mcp.scalekit.com/brandfetchmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""brandfetchmcp"": {
""url"": ""https://mcp.scalekit.com/brandfetchmcp"",
""type"": ""http""
}
}
}