Marketing & SEO
Google Search Console
Request indexing, removals, users and index reports for your sites.
15 endpoints
Connect Brandfolder assets, tags, collections and share links to your agent or reporting workflow. Use MCP or REST from n8n, Make, Zapier and scripts.
13 tools Read and write
Brandfolder has an official REST API (v4) and webhooks, documented by Smartsheet, but no MCP server for assets (checked 6 Nov 2026). Cotlet runs 13 Brandfolder tools hosted, over MCP for agents and REST for scripts. There is no API key or developer setup, it works inside the ChatGPT and Claude apps, runs 24/7, and one Cotlet account covers many apps.
| What you need | Official API | Zapier app | Cotlet |
|---|---|---|---|
| Search and read assets | Yes, with a key | Find an Asset | Yes |
| Add an asset from a file URL | Yes, public URL | Create Asset | Yes |
| Tags and custom fields | Yes | Create Tag, Create Custom Field | Yes |
| Make a private, view-only or expiring share link | Not in the reference | Not among the actions shown | Yes, after your OK |
| Start without code or a Brandfolder key | Your code and key | A Zapier plan | Yes, sign in once |
Checked 6 Nov 2026. Sources: Brandfolder API introduction · Brandfolder API reference · Brandfolder webhooks · Zapier: Brandfolder integrations · Smartsheet MCP server · Smartsheet Help: Share Brandfolder assets
Use your own login in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Brandfolder password, and no share link or collection change reaches anyone until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. The setup below takes three steps.
Add the Cotlet address. Sign up, log in to Brandfolder in its Cloud Browser, press Enable for agents, then add https://cotlet.dev/mcp/v1 as an MCP server or connector in your agent.
Approve the connection. Chat apps ask you to sign in to Cotlet. Editors, n8n and scripts use an API key from the console.
Ask in plain words. Your agent searches, tags and shares from your Brandfolder login. Anything that reaches other people waits for your OK.
One shared address, https://cotlet.dev/mcp/v1, also carries Brandfolder next to your other apps. If you enable Brandfolder after connecting, refresh the connector so the new tools show up.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-brandfolder \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-brandfolder": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-brandfolder]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: brandfolder_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: brandfolder_write Searching inside a collection needs your login to be a member of it. Whether you get a CDN link depends on your Brandfolder plan.
Returns each Brandfolder with its ID, slug, name and asset count, in the order Brandfolder shows them. Only Brandfolders your login can open are listed. Use the ID or slug as brandfolder in the other tools.
MCP callbrandfolder_read → list_brandfolders
REST endpointGET https://cotlet.dev/api/v1/brandfolder/brandfolders
| Name | Type | Description |
|---|---|---|
| search string | string | Part of a Brandfolder name. |
{
"brandfolders": [
{
"id": "oqg5b8-9c1l2k-4xv0ng",
"slug": "yourbrand",
"name": "Yourbrand",
"asset_count": 842
},
{
"id": "p2h7d1-3m8n5q-6zt9ab",
"slug": "yourbrand-events",
"name": "Yourbrand Events",
"asset_count": 119
}
]
} Returns each section with its ID, name and default asset type, in Brandfolder order. Sections hold the assets and group them in the Brandfolder. Use the section ID in add_asset and search_assets.
MCP callbrandfolder_read → list_sections
REST endpointGET https://cotlet.dev/api/v1/brandfolder/sections
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
{
"brandfolder": "brandfolder"
} {
"sections": [
{
"id": "sx7k2m-4d9f1a-8bq3pw",
"name": "Logos",
"default_asset_type": "GenericFile"
},
{
"id": "sy1c8n-2e5g7b-9ur4qz",
"name": "Product shots",
"default_asset_type": "GenericFile"
}
]
} Returns each collection you are a member of with its ID, name, tagline and asset count. A collection holds a subset of assets without copying them, and you must be a member of it to search inside it.
MCP callbrandfolder_read → list_collections
REST endpointGET https://cotlet.dev/api/v1/brandfolder/collections
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
{
"brandfolder": "brandfolder"
} {
"collections": [
{
"id": "cn4r9t-7h2j5d-1wk8ys",
"name": "Spring Launch",
"tagline": "Assets for the April campaign",
"asset_count": 36
}
]
} Returns each asset with its ID, name, description, tags, section and created date. Pages follow the order Brandfolder returns them, and total says how many assets match. Searching inside a collection needs your account to be a member of it.
MCP callbrandfolder_read → search_assets
REST endpointGET https://cotlet.dev/api/v1/brandfolder/assets/search
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
| query string | string | Search text. To filter on a custom field use custom_fields.{key}:"{value}". |
| section_id string | string | Only assets in this section, from list_sections. |
| collection_id string | string | Only assets in this collection, from list_collections. |
| page integer | integer | Page number, starting at 1. |
| per integer | integer | Assets per page. Default 100, maximum 3000. |
{
"brandfolder": "brandfolder"
} {
"total": 2,
"page": 1,
"assets": [
{
"id": "as3d8f-1k6m2p-5vy7ct",
"name": "Spring hero banner",
"tags": [
"banner",
"spring"
],
"section": "Product shots",
"created_at": "2026-11-05T09:12:44Z"
},
{
"id": "as4e9g-2l7n3q-6wz8du",
"name": "Logo pack 2026",
"tags": [],
"section": "Logos",
"created_at": "2026-11-04T16:03:10Z"
}
]
} Returns the name, description, tags, custom fields, availability dates and the attachments with file name and CDN URL. The CDN URL returns 404 while the asset is pending approval or unpublished. Whether you get a CDN URL depends on your Brandfolder plan.
MCP callbrandfolder_read → get_asset
REST endpointGET https://cotlet.dev/api/v1/brandfolder/assets/{asset_id}
| Name | Type | Description |
|---|---|---|
| asset_id string required | string | Asset ID from search_assets. |
{
"asset_id": "asset_8c41d2"
} {
"id": "as3d8f-1k6m2p-5vy7ct",
"name": "Spring hero banner",
"description": "Homepage banner, 1600 by 600",
"tags": [
"banner",
"spring"
],
"custom_fields": {
"Campaign": "Spring Launch"
},
"attachments": [
{
"filename": "spring-hero.png",
"cdn_url": "https://cdn.example.com/spring-hero.png"
}
]
} Returns each custom field key and its values. When controlled custom fields are on, set_custom_field accepts only the allowed values listed here.
MCP callbrandfolder_read → list_custom_fields
REST endpointGET https://cotlet.dev/api/v1/brandfolder/custom-fields
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
{
"brandfolder": "brandfolder"
} {
"custom_fields": [
{
"key": "Campaign",
"values": [
"Spring Launch",
"Summer Sale"
]
},
{
"key": "Usage rights",
"values": [
"Internal",
"Public"
]
}
]
} Files come from public links; nothing on your computer is uploaded. With controlled custom fields only the allowed values work.
Returns the new asset ID and the section it landed in. The file must sit at a public URL; files on your computer are not uploaded. It adds to your library and reaches no one, so it does not wait for your OK; delete_asset removes it.
MCP callbrandfolder_write → add_asset
REST endpointPOST https://cotlet.dev/api/v1/brandfolder/sections/{section_id}/assets
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
| section_id string required | string | Section that receives the asset, from list_sections. |
| name string required | string | Asset name. |
| url string required | string | Public URL of the file. It must stay reachable for a couple of hours. |
| filename string required | string | File name with extension. |
| description string | string | Asset description. |
{
"brandfolder": "yourbrand",
"section_id": "sy1c8n-2e5g7b-9ur4qz",
"name": "Autumn hero banner",
"url": "https://example.com/files/autumn-hero.png",
"filename": "autumn-hero.png",
"description": "Homepage banner, 1600 by 600"
} {
"asset_id": "as5f0h-3m8o4r-7xa9ev",
"name": "Autumn hero banner",
"section": "Product shots",
"attachments": 1
} Returns the asset tags after the change. Tags you pass are added to the ones already there. It reaches no one and the extra tags can be removed in the app, so it does not wait for your OK.
MCP callbrandfolder_write → tag_asset
REST endpointPOST https://cotlet.dev/api/v1/brandfolder/assets/{asset_id}/tag
| Name | Type | Description |
|---|---|---|
| asset_id string required | string | Asset ID from search_assets. |
| tags array required | array | Tag names to add. |
{
"asset_id": "asset_8c41d2",
"tags": "tags"
} {
"asset_id": "as4e9g-2l7n3q-6wz8du",
"tags": [
"logo",
"brand",
"pack"
]
} Returns the asset custom fields after the change. A key that is not in the Brandfolder fails when controlled custom fields are on. It reaches no one and you can set the old value back, so it does not wait for your OK.
MCP callbrandfolder_write → set_custom_field
REST endpointPUT https://cotlet.dev/api/v1/brandfolder/assets/{asset_id}/custom-field
| Name | Type | Description |
|---|---|---|
| asset_id string required | string | Asset ID from search_assets. |
| key string required | string | Custom field key from list_custom_fields. |
| value string required | string | Field value. With controlled custom fields it must be an allowed value. |
{
"asset_id": "asset_8c41d2",
"key": "key",
"value": "value"
} {
"asset_id": "as4e9g-2l7n3q-6wz8du",
"custom_fields": {
"Campaign": "Spring Launch"
}
} Returns the collection ID and name. A collection is a way to organize, share and restrict a subset of assets, so create it empty and fill it with add_to_collection. It reaches no one until someone is given access, so it does not wait for your OK.
MCP callbrandfolder_write → create_collection
REST endpointPOST https://cotlet.dev/api/v1/brandfolder/collections
| Name | Type | Description |
|---|---|---|
| brandfolder string required | string | Brandfolder ID or slug from list_brandfolders. |
| name string required | string | Collection name. |
| tagline string | string | Short line under the name. |
{
"brandfolder": "brandfolder",
"name": "Jane Doe"
} {
"collection_id": "cn4r9t-7h2j5d-1wk8ys",
"name": "Spring Launch",
"asset_count": 0
} Returns how many assets were added and the new asset count of the collection. The assets stay in their sections. Members of the collection see them, so the call waits for your OK.
MCP callbrandfolder_write → add_to_collection
REST endpointPOST https://cotlet.dev/api/v1/brandfolder/collections/{collection_id}
| Name | Type | Description |
|---|---|---|
| collection_id string required | string | Collection ID from list_collections. |
| asset_ids array required | array | Asset IDs from search_assets. |
{
"collection_id": "collection_8c41d2",
"asset_ids": "asset ids"
} {
"collection_id": "cn4r9t-7h2j5d-1wk8ys",
"added": 2,
"asset_count": 2
} Your logged-in Brandfolder profile, encrypted with AES-256-GCM, in Finland. Not the password.
The 13 Brandfolder tools. Never the cookie or your password.
What your login sees: the Brandfolders, sections, collections and assets you can open.
Users, invitations, permissions, plan, password and Brandfolder settings.
You keep your SSO or 2-step check and do it yourself. We never type it.
Disable for agents in one click, or reset the browser.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or third-party pentest yet.
When Brandfolder moves a button or renames a field, the fix happens on our side and your prompts keep working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Add an asset from a URL | Delete it with delete_asset or in Brandfolder |
| Tag an asset | Remove the extra tags in Brandfolder |
| Set a custom field | Set the old value back |
| Create a collection | It is empty and reaches no one until you give access |
| Create a share link | No, anyone with the URL can open it as the options allow |
| Delete an asset | Not from Cotlet |
3 of 13 tools ask first: add_to_collection, create_share_link and delete_asset, the ones other people see or lose. Adding, tagging and field changes reach no one, so they run at once. Switch the wait off per tool for a scheduled run.
The example below adds an asset, which does not wait for an OK.
{
"name": "add_asset",
"arguments": {
"brandfolder": "yourbrand",
"section_id": "sy1c8n-2e5g7b-9ur4qz",
"name": "Autumn hero banner",
"url": "https://example.com/files/autumn-hero.png",
"filename": "autumn-hero.png",
"description": "Homepage banner, 1600 by 600"
}
} curl -X POST https://cotlet.dev/api/v1/brandfolder/sections/sy1c8n-2e5g7b-9ur4qz/assets \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"brandfolder":"yourbrand","name":"Autumn hero banner","url":"https://example.com/files/autumn-hero.png","filename":"autumn-hero.png","description":"Homepage banner, 1600 by 600"}' {
"asset_id": "as5f0h-3m8o4r-7xa9ev",
"name": "Autumn hero banner",
"section": "Product shots",
"attachments": 1
} Scripts and cron jobs reach the same tools over REST at /api/v1/brandfolder, with the same key and price. A failed call costs nothing. The tools table lists the REST path of each tool.
About $26 a monthfor a brand team adding about 60 assets a month, 4,500 credits. Your Brandfolder contract is billed by Brandfolder as before.
| Job | Calls | Credits |
|---|---|---|
| Tag and describe the day's new uploads | 10 × 22 | 2,200 |
| Build a campaign collection | 3 × 2 | 60 |
| Send a partner share link | 2 × 8 | 160 |
| Import 12 product photos from URLs | 13 × 2 | 260 |
| Weekly audit of untagged assets | 8 × 4 | 320 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 4,500 |
The month is our example: about 60 new assets, 2 campaign collections, 8 share links and a weekly audit. No public figure for a typical Brandfolder library exists. Brandfolder shows no prices (Premium and Enterprise, book a demo, 6 Nov 2026); Vendr's buyer data puts the median contract at $24,999 a year (53 purchases). Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Brandfolder API v4 | Official REST API with webhooks for new, changed and deleted assets. | No MCP server. You write the code and use your own API key; share links are not in the reference. |
| Zapier and its Brandfolder MCP page | Triggers for new assets and actions that create or update assets, collections, sections, tags and custom fields. | Runs on Zapier plans and tasks. No share-link action among those shown. |
| moiso97barrantes-ship-it/Brandfolder-MCP | Community MCP server for Claude on a Cloudflare Worker: search, create, update and delete assets and collections. | 0 stars, three commits on 23 Apr 2026, no license. You deploy it and give it your API key. |
| brandfolder-sdk-php and brandfolder-sdk-python | Official SDKs for the API, 6 and 4 stars, last pushes 29 Oct 2026 and 20 Dec 2024. | Code libraries for developers, not an MCP server. |
| Smartsheet MCP server | Official MCP server for sheets, reports and other Smartsheet work data. | Its documentation lists no Brandfolder tools. |
There is no official Brandfolder MCP server and no other hosted one besides ours that we found. If you have an engineer and want asset events pushed to your own server, the official API and its webhooks are the lean route. Cotlet fits when you want your agent working in ChatGPT or Claude today, with share links, no key to manage and one account for your other apps too.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), working since 2019, founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Write to contact@cotlet.dev with questions about the Brandfolder tools.
Sign up at cotlet.dev, log in to Brandfolder once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Brandfolder account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Brandfolder: tag and describe new uploads; build a collection for a campaign; send a time-limited share link. You ask in plain words, and anything that reaches other people waits for your OK first.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Create a free account at https://cotlet.dev, open Brandfolder under Integrations in the console and log in to Brandfolder in its Cloud Browser. The trial starts with your first app, no card asked.
No. add_asset takes a public file URL, the same as the Brandfolder API: Brandfolder reads the file from that address, which must stay reachable for a couple of hours. Put the file at a link first, or add it in the app.
The CDN URL of an asset returns 404 while the asset is pending approval or unpublished, and whether you get a CDN URL at all depends on your Brandfolder plan (Brandfolder API recipes). get_asset shows the attachments and their URLs, so your agent can tell you which case it is.
Yes. Its API sends asset.create, asset.update and asset.delete events to a public URL (checked 6 Nov 2026). Cotlet has no event tool, so run your agent on a schedule instead, for example a daily search_assets pass for new uploads.
No. Cotlet works in your signed-in Brandfolder session, so you need no key from Brandfolder. If you want the official API, you find your key at brandfolder.com/profile#integrations.
Only the door is different. Both expose the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Brandfolder or Smartsheet Inc.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy