search
AnalysisSearch Assets, Models & Workflows
Search for assets (images, video, 3D, audio), models, or workflows by text, visual similarity, or filters.
Write-class: inline images in image or images.like/unlike are saved as assets in the selected project before similarity search (deduplicated when possible). Text and existing asset IDs do not upload images. OAuth requires explicit team_id and project_id; no automatic scope selection.
Provide query, filter, non-empty filters, image or images. public=true alone does not browse a catalog.
Workflows take keyword text and filters only, no image or semantic search. Search hits are summaries — call workflow_get with a hit's id for inputs and the editable graph.
Args:
- team_id, project_id: required for OAuth callers
- query_semantic_ratio: 0.5–0.8 for hybrid keyword + semantic search
- filters: structured filters — kind, model_id, type, tags, created_after, created_before, privacy, mime_type, collection_ids
- sort_by: ignored when query_semantic_ratio > 0 (semantic search)
Returns: matching results with metadata. To view an asset, call asset_display with the asset ID — do NOT try to render asset URLs directly (they are too large for inline display).
Examples:
- "Find 3D voxel assets" -> target="assets", query="voxel", filters={kind: "3d"}
- "Find assets like these but not like that" -> target="assets", images={like: ["<good_id_1>", "<good_id_2>"], unlike: ["<bad_id>"]}
- "Search public anime models" -> target="models", query="anime style", public=true
- "Recent large 3D assets" -> target="assets", filters={kind: "3d"}, filter='width > 512', sort_by=["createdAt:desc"]
- "Find public image apps" -> target="workflows", query="image", public=true, filter='status = "ready"', limit=3 (status uses raw filter, not filters)
Don't use when you already know the asset_id or model_id: use asset_get, models_list or asset_display (assets_list and model_get are catalog-only, via scenario_tool_execute_read). To find MCP tools (not platform content), use scenario_tools_search.
open-world
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| target | enum(assets | models | workflows) | ✓ | What to search: assets, models, or workflows. Workflows support keyword text and filters only; provide query, filter, or non-empty filters. |
| query | string | — | Text search query. |
| image | string | — | Asset ID, data URL or base64 image for visual similarity. Inline bytes are saved in the selected project. HTTP(S) URLs are unsupported. Mutually exclusive with images. |
| images | unknown | — | Multi-image similarity with positive (like) and negative (unlike) examples. Mutually exclusive with image. |
| public | boolean | — | Whether to include public results. true searches public, false or omitted searches private. |
| filters | unknown | — | Structured filter criteria — converted to Meilisearch filter syntax. Only the listed fields are valid. Use "kind" for asset type (not "modality"). |
| filter | string | — | Raw Meilisearch filter expression (e.g. 'kind = "3d" AND width > 512'). Use only filterable fields for the selected target, with camelCase names such as modelId or mimeType. No regex or id filters. Workflows support status here (e.g. 'status = "ready"'), not in filters. Combined with filters using AND. |
| query_semantic_ratio | number | — | Balance between keyword (0) and semantic (1) text search. Default 0 (keyword only). |
| image_semantic_ratio | number | — | Image similarity method: 0 = feature matching, 1 = semantic embedding. Default 1. |
| sort_by | array | — | Sort attributes, e.g. ["createdAt:desc"]. |
| limit | number | 20 | Results per page (1-100). |
| offset | number | 0 | Pagination offset. |
| include_urls | boolean | false | true includes signed CDN URLs (url, thumbnail) on each hit (~733 chars each). Default false — asset hits: use asset_download / asset_get when you need a URL; model thumbnails have no URL-free alternative. |
| team_id | string | — | Team ID. Required with project_id for OAuth callers; an API key is scoped by the key. |
| project_id | string | — | Project ID. Required with team_id for OAuth callers; an API key is scoped by the key. |
| response_format | enum(json | markdown) | json | Output format: 'json' for structured data, 'markdown' for human-readable text. |
Example Request
JSON
{
"target": "assets",
"query": "dragon concept art",
"filters": {
"modality": "image",
"tags": [
"dragon",
"fantasy"
]
},
"limit": 10,
"team_id": "team_abc123",
"project_id": "proj_xyz789"
}Example Response
JSON
{
"target": "assets",
"assets": [
{
"id": "asset_img001",
"name": "dragon_sunset.png",
"tags": [
"dragon",
"fantasy",
"sunset"
],
"mimeType": "image/png"
},
{
"id": "asset_img002",
"name": "dragon_cave.png",
"tags": [
"dragon",
"fantasy",
"cave"
],
"mimeType": "image/png"
}
],
"estimatedTotalHits": 47
}Common Use Cases
- Find previously generated assets matching a concept to avoid regenerating
- Search models by modality (image, video, 3d, audio) to discover available generators
- Run visual similarity search by passing a reference image instead of a text query
- Filter assets by tag or model to review the output of a specific generation run