search_library_creatives_by_name
Search or list creative assets in the library by name, across ALL content types — images, videos, GIFs and documents.
Read creative
Returns data. Calling it changes nothing, so it is safe in an unattended loop.
What it does
Search or list creative assets in the library by name, across ALL content
types — images, videos, GIFs and documents. Returns detailed information about
matching assets with pagination support.
KEYWORDS (for tool discovery): search creative library, list video creatives,
find videos, list uploaded videos, browse video library, search videos by name,
list all creatives, find creative by id, look up creative id, list documents,
list GIFs, library assets, video assets, creative assets, list creatives by type.
This is the general-purpose library search/list tool for every content
type — there is no separate "list videos" or "get library items" tool.
WHEN TO USE:
- Find specific creatives by name in the library
- List all creatives in the library (when creativeName is omitted)
- Search for creative assets with partial name matching
- Filter by content type (IMAGE, VIDEO, GIF, DOCUMENT)
- Locate creatives for use in ad creation
- Verify creative asset availability before campaign setup
- Get creative metadata and IDs for asset management
- Browse through paginated results
SEARCH BEHAVIOR:
- Supports partial name matching when creativeName is provided
- Case-insensitive search
- Returns all creatives matching the search term
- Automatically URL encodes the search name
- When creativeName is omitted, returns all creatives in the library
- Supports optional content type filtering (IMAGE, VIDEO, GIF, DOCUMENT)
- Use lower number in the size parameter. Preference for 5 or 10 max.
PAGINATION:
- Supports pagination with `page` and `size` parameters.
- Defaults: page=0, size=10 (server-side default in
`MetadataAPIClient.search_library_creatives_by_name`).
- Page numbering starts at 0.
- The platform returns Spring `PageResponse` shape
(`totalElements`, `totalPages`, `data`) so callers can
drive a paginator off the response.
- Recommended size: 5-10 to keep LLM responses manageable.
Larger windows (up to ~25) are accepted; anything beyond
blows token budgets fast.
RETURNED DATA:
- Creative asset ID and name
- File properties (size, dimensions, format)
- Upload and modification timestamps
- Visibility status and permissions
- Preview URLs and download links
- Associated metadata and tags
- Pagination metadata (total count, page info)
USE CASES:
- "List all images in the library"
- "Find all images with 'product' in the name"
- "Search for logo images in the library"
- "Get image ID for 'campaign-hero-banner.jpg'"
- "Find all images uploaded for the Q4 campaign"
- "Browse images page by page (page=0, size=5)"
- "List only videos: contentTypes=VIDEO"
- "Filter for images and videos: contentTypes=IMAGE,VIDEO"
- "Get all documents: contentTypes=DOCUMENT"
- "Find all asset types: contentTypes=IMAGE,VIDEO,GIF,DOCUMENT"
NOTE: This is the single tool for searching/listing ALL creative asset
types. To restrict to a type, pass contentTypes (e.g. VIDEO for videos
only); omit it to return every type. Use fetch_creative_details when you
already have a specific creative id and want its full metadata.Arguments
| Argument | Type | Notes | |
|---|---|---|---|
creativeName |
string | Name or partial name of the creative to search for. Supports partial matching and is case-insensitive. Omit to list all creatives. | |
page |
integer | Zero-based page index (default: 0). | |
size |
integer | Results per page (default: 10, recommended max: 10). Larger windows blow LLM token budgets — only request more when the caller actually needs it. | |
contentTypes |
string | Filter by content types (comma-separated). Supported values: IMAGE,VIDEO,GIF,DOCUMENT. Example: IMAGE,VIDEO or IMAGE%2CVIDEO%2CGIF%2CDOCUMENT |
Request
curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
-H "Authorization: $METADATA_PAT" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2025-11-25" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_library_creatives_by_name","arguments":{}}}'
Response
Real, from the production server, in 307 ms. The full response was 14,409 bytes; this is the first part of it. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.
recorded response
{
"totalElements": "[number redacted]",
"totalPages": "[number redacted]",
"data": [
{
"id": "[number redacted]",
"name": "[name redacted]",
"labelName": "[labelName redacted]",
"url": "[url redacted]",
"width": "[number redacted]",
"height": "[number redacted]",
"sizeInKb": "[number redacted]",
"content": null,
"status": true,
"channels": [
{
"channel": "FACEBOOK",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:51.000Z",
"message": null
}
},
{
"channel": "INSTAGRAM",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:51.000Z",
"message": null
}
},
{
"channel": "LINKEDIN",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:51.000Z",
"message": null
}
}
],
"type": "IMAGE",
"thumbnail": "[thumbnail redacted]",
"caption": null,
"preview": null,
"totalPages": null,
"visibility": "VISIBLE",
"tags": [],
"usageType": null,
"account_id": "[number redacted]",
"created_date": "2026-09-03T20:48:51.000Z",
"content_type": "[content_type redacted]"
},
{
"id": "[number redacted]",
"name": "[name redacted]",
"labelName": "[labelName redacted]",
"url": "[url redacted]",
"width": "[number redacted]",
"height": "[number redacted]",
"sizeInKb": "[number redacted]",
"content": null,
"status": true,
"channels": [
{
"channel": "FACEBOOK",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:47.000Z",
"message": null
}
},
{
"channel": "INSTAGRAM",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:47.000Z",
"message": null
}
},
{
"channel": "LINKEDIN",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:47.000Z",
"message": null
}
}
],
"type": "IMAGE",
"thumbnail": "[thumbnail redacted]",
"caption": null,
"preview": null,
"totalPages": null,
"visibility": "VISIBLE",
"tags": [],
"usageType": null,
"account_id": "[number redacted]",
"created_date": "2026-09-03T20:48:47.000Z",
"content_type": "[content_type redacted]"
},
{
"id": "[number redacted]",
"name": "[name redacted]",
"labelName": "[labelName redacted]",
"url": "[url redacted]",
"width": "[number redacted]",
"height": "[number redacted]",
"sizeInKb": "[number redacted]",
"content": null,
"status": true,
"channels": [
{
"channel": "FACEBOOK",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:42.000Z",
"message": null
}
},
{
"channel": "INSTAGRAM",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:42.000Z",
"message": null
}
},
{
"channel": "LINKEDIN",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:42.000Z",
"message": null
}
}
],
"type": "IMAGE",
"thumbnail": "[thumbnail redacted]",
"caption": null,
"preview": null,
"totalPages": null,
"visibility": "VISIBLE",
"tags": [],
"usageType": null,
"account_id": "[number redacted]",
"created_date": "2026-09-03T20:48:42.000Z",
"content_type": "[content_type redacted]"
},
{
"id": "[number redacted]",
"name": "[name redacted]",
"labelName": "[labelName redacted]",
"url": "[url redacted]",
"width": "[number redacted]",
"height": "[number redacted]",
"sizeInKb": "[number redacted]",
"content": null,
"status": true,
"channels": [
{
"channel": "FACEBOOK",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:38.000Z",
"message": null
}
},
{
"channel": "INSTAGRAM",
"status": "PENDING",
"statusDetails": {
"date": "2026-09-03T20:48:38.000Z"
… truncated
Related
Other creative tools: