> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metabind.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Content Types

> Search for content types using filters or semantic search

Search for content types using standard filters or semantic search.

## Input Schema

```json theme={null}
{
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "description": "Project ID (optional, uses session default if not provided)"
    },
    "query": {
      "type": "string",
      "description": "Natural language query for semantic search. When provided, results are ranked by relevance."
    },
    "status": {
      "type": "string",
      "enum": ["draft", "modified", "published", "unpublished", "deleted"],
      "default": "published"
    },
    "tags": {
      "type": "array",
      "items": { "type": "string" }
    },
    "page": {
      "type": "number",
      "default": 1
    },
    "limit": {
      "type": "number",
      "default": 20,
      "maximum": 100
    }
  }
}
```

## Parameters

| Parameter   | Type      | Default         | Description                            |
| ----------- | --------- | --------------- | -------------------------------------- |
| `projectId` | string    | session default | Project to search in                   |
| `query`     | string    | -               | Natural language semantic search query |
| `status`    | string    | published       | Filter by status                       |
| `tags`      | string\[] | -               | Filter by tags                         |
| `page`      | number    | 1               | Page number                            |
| `limit`     | number    | 20              | Items per page (max 100)               |

## Response

| Field                        | Type   | Description                          |
| ---------------------------- | ------ | ------------------------------------ |
| `contentTypes`               | array  | Array of content type objects        |
| `contentTypes[].id`          | string | Unique content type identifier       |
| `contentTypes[].name`        | string | Display name                         |
| `contentTypes[].description` | string | Structured markdown description      |
| `contentTypes[].status`      | string | Publication status                   |
| `contentTypes[].version`     | number | Version number                       |
| `contentTypes[].typeVersion` | number | Schema version number                |
| `contentTypes[].excerpt`     | string | Relevant text excerpt (with `query`) |
| `contentTypes[].similarity`  | number | Similarity score 0-1 (with `query`)  |
| `total`                      | number | Total matching items                 |

<Note>
  The `schema` field is intentionally excluded from search results to minimize token usage. Use `get_content_type` for full schemas.
</Note>

## Example

### Request

```json theme={null}
{
  "query": "interactive stories"
}
```

### Response

```json theme={null}
{
  "contentTypes": [
    {
      "id": "ct_story_001",
      "name": "Story",
      "description": "Interactive story content type for long-form narrative experiences.",
      "status": "published",
      "version": 1,
      "typeVersion": 1,
      "excerpt": "...photo galleries, and structured text sections...",
      "similarity": 0.92
    }
  ],
  "total": 1
}
```

## Usage

### Semantic Search

Search using natural language:

```javascript theme={null}
const result = await mcp.call("search_content_types", {
  query: "content for blog posts"
});
```

### Filter by Status

Find draft content types:

```javascript theme={null}
const result = await mcp.call("search_content_types", {
  status: "draft"
});
```

### Filter by Tags

Find content types with specific tags:

```javascript theme={null}
const result = await mcp.call("search_content_types", {
  tags: ["marketing", "landing-page"]
});
```
