List components using standard filters or semantic search.
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"description": "Project ID (optional, uses session default if not provided)"
},
"query": {
"type": "string",
"description": "Natural language search query for semantic search. Uses AI-powered vector search to find relevant components based on meaning, not just keywords.",
"minLength": 1,
"maxLength": 500,
"example": "layout for product listings"
},
"type": {
"type": "string",
"enum": ["view", "layout", "assetCatalog"],
"description": "Filter by component type (optional)"
},
"status": {
"type": "string",
"enum": ["draft", "published", "deleted"],
"default": "published",
"description": "Filter by component status (optional)"
},
"collectionId": {
"type": "string",
"description": "Filter by collection ID (optional)"
},
"page": {
"type": "number",
"default": 1,
"description": "Page number for paginated results (1-based indexing)"
},
"limit": {
"type": "number",
"default": 20,
"maximum": 100,
"description": "Maximum items to return per page"
}
}
}
Parameters
| Parameter | Type | Default | Description |
|---|
projectId | string | session default | Project to search in |
query | string | - | Natural language semantic search query |
type | string | - | Filter by component type |
status | string | published | Filter by status |
collectionId | string | - | Filter by collection |
page | number | 1 | Page number |
limit | number | 20 | Items per page (max 100) |
Component Types
| Type | Description |
|---|
view | UI display components (cards, headers, etc.) |
layout | Structural layout components (grids, stacks, etc.) |
assetCatalog | Asset catalog components for media management |
Response
| Field | Type | Description |
|---|
components | array | Array of component objects |
components[].id | string | Unique component identifier |
components[].name | string | Display name of the component |
components[].description | string | Component description |
components[].type | string | Component type (view, layout, assetCatalog) |
components[].status | string | Publication status |
components[].version | number | Version number |
components[].excerpt | string | Relevant text excerpt (when query is used) |
components[].similarity | number | Similarity score 0-1 (when query is used) |
total | number | Total number of matching items |
Examples
Semantic Search
Search for components using natural language:
{
"query": "layout for product listings"
}
Response:
{
"components": [
{
"id": "comp_product_layout_001",
"name": "Product Listing Layout",
"description": "Layout component for displaying product listings with grid or list view options",
"type": "layout",
"status": "published",
"version": 2,
"excerpt": "...Layout component for displaying product listings with grid or list view options...",
"similarity": 0.94
},
{
"id": "comp_product_grid_001",
"name": "Product Grid",
"description": "Grid layout for showcasing multiple products",
"type": "layout",
"status": "published",
"version": 1,
"excerpt": "...Grid layout for showcasing multiple products in a responsive grid...",
"similarity": 0.87
}
],
"total": 2
}
Filter by Type
List all published layout components:
{
"type": "layout",
"status": "published"
}
Response:
{
"components": [
{
"id": "comp_product_layout_001",
"name": "Product Listing Layout",
"description": "Layout component for displaying product listings",
"type": "layout",
"status": "published",
"version": 2
},
{
"id": "comp_article_layout_001",
"name": "Article Layout",
"description": "Layout for long-form article content",
"type": "layout",
"status": "published",
"version": 3
}
],
"total": 2
}
Filter by Collection
List components in a specific collection:
{
"collectionId": "coll_marketing_001"
}
Usage
Browse Components by Type
// List all view components
const views = await mcp.call("list_components", {
type: "view"
});
// List all layout components
const layouts = await mcp.call("list_components", {
type: "layout"
});
Search with Combined Filters
// Search for hero components within views
const result = await mcp.call("list_components", {
query: "hero banner",
type: "view"
});
Combine semantic search with filters for precise results. For example, search for “hero banner” within the view type to find relevant display components.