# Storyblok

Headless CMS with visual editor for content management and delivery across multiple platforms

- **Category:** developer tools
- **Auth:** API_KEY, OAUTH2
- **Composio Managed App Available?** No
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `STORYBLOK`
- **Version:** 00000000_00

## Tools

### Fetch Content Type Items (GraphQL)

**Slug:** `STORYBLOK_FETCH_CONTENT_TYPE_ITEMS_GRAPHQL`

Fetch multiple stories/content items using Storyblok's GraphQL API with filtering and pagination. Use starts_with with language code prefix (e.g., 'es/*', 'hi/*') to retrieve translated content in specific languages.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (multiplied by per_page). Default: 1. |
| `per_page` | integer | No | Number of items per page. Default: 25, Maximum: 100. |
| `with_tag` | string | No | Filter by specific tag slugs (comma-separated, acts as OR operator). |
| `starts_with` | string | No | Filter by full_slug path to retrieve entries from a specific folder or language. Use language code prefix (e.g., 'es/*', 'hi/*', 'en/*') to retrieve translated content, or folder paths (e.g., 'articles/', 'blog/'). |
| `content_type` | string | Yes | The content type name to query (e.g., 'Page', 'Article', 'Product'). Storyblok generates a GraphQL query field by appending 'Items' to this name (e.g., 'Page' becomes 'PageItems'). |
| `excluding_slugs` | string | No | Comma-separated list of slugs to exclude from results. |
| `first_published_at_lt` | string | No | Filter stories published before a specific date (ISO 8601 format). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Fetch GraphQL Content Item

**Slug:** `STORYBLOK_FETCH_GRAPHQL_CONTENT_ITEM`

Tool to fetch a single story in a specific language using Storyblok GraphQL API with field-level translations. For each content type (e.g., Page), Storyblok generates a ContentTypeItem field (e.g., PageItem). Use when you need to retrieve a specific story by ID or slug with optional language translation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Slug, ID, or UUID of the story to fetch. For field-level translations, prepend language code to the ID (e.g., 'es/home' for Spanish version of 'home'). Otherwise, use the story slug, numeric ID, or UUID. |
| `language` | string | No | Language code for field-level translations (e.g., 'en', 'es', 'hi'). When provided, queries the translated content. For field-level translations, you can either use this parameter or prepend the language code to the ID. |
| `content_type` | string | Yes | The content type name to query (e.g., 'Page', 'Article', 'Product'). Storyblok generates a '<ContentType>Item' field for each content type (e.g., 'PageItem' for 'Page'). This will be automatically formatted to '<ContentType>Item' in the GraphQL query. |
| `resolve_relations` | string | No | Resolve related content using dot-notation format (e.g., 'article.categories' to resolve the 'categories' field in 'article' component). Multiple relations can be comma-separated. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Extension/App

**Slug:** `STORYBLOK_GET_APP`

Tool to retrieve a Storyblok extension/app by ID using the Management API. Use when you need to fetch details about a specific extension or app installed in Storyblok.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The numeric identifier for the extension/app to retrieve. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Datasource Entries

**Slug:** `STORYBLOK_GET_DATASOURCE_ENTRIES`

Tool to retrieve datasource entries from Storyblok via GraphQL API. Use when you need to fetch datasource data. Returns datasource entries with fields like id, name, value, and dimension_value.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | The GraphQL query string to retrieve datasource entries. Use 'DatasourceEntries' query with fields like id, name, value, dimension_value. Example: '{ DatasourceEntries { items { id name value } } }' |
| `version` | string | No | Content version to retrieve. Use 'draft' for draft content or 'published' for published content. |
| `variables` | object | No | Optional variables for the GraphQL query. Use when your query contains variable placeholders. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get GraphQL Rate Limit

**Slug:** `STORYBLOK_GET_GRAPHQL_RATE_LIMIT`

Tool to retrieve rate limit information from Storyblok GraphQL API. Use when you need to check the maximum cost per request to calculate safe request rates (100 / maxCost = requests per second).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | GraphQL query string to get rate limit information. Use the default value to query the maxCost field, which represents the approximation of the maximum cost of a single request. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Page Item

**Slug:** `STORYBLOK_GET_PAGE_ITEM`

Tool to retrieve a single page item by ID or slug from Storyblok using GraphQL. Use when you need to fetch specific page content with custom field selection. Supports both draft and published versions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | No | The ID or slug of the page item to retrieve. Use either numeric ID or string slug like 'home'. |
| `fields` | string | No | GraphQL fields to retrieve from the PageItem. Customize to fetch only needed fields. |
| `version` | string ("draft" | "published") | No | Version of the content to retrieve - either 'draft' or 'published'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List GraphQL Content Type Items

**Slug:** `STORYBLOK_LIST_GRAPHQL_CONTENT_TYPE_ITEMS`

Tool to retrieve multiple content items with pagination, filtering, and relation resolution for any Storyblok content type via GraphQL. Content types are dynamically generated as [ContentType]Items (e.g., PageItems, BlogArticleItems). Use when you need to query structured content with flexible field selection and filtering.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | GraphQL query string for retrieving content items. Use the pattern: { [ContentType]Items { total items { id name slug full_slug created_at published_at uuid content } } } where [ContentType] is dynamically generated (e.g., PageItems, BlogArticleItems). Available fields: id, name, slug, full_slug, parent_id, position, is_startpage, first_published_at, created_at, published_at, uuid, content, alternates, translated_slugs. Supports pagination (page, per_page), filtering (with_tag, starts_with, by_uuids, excluding_ids), and language parameter for localized content. |
| `version` | string | No | Content version to retrieve. Use 'published' for published content (default) or 'draft' for unpublished/draft content. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Query page items via GraphQL

**Slug:** `STORYBLOK_QUERY_PAGE_ITEMS`

Execute GraphQL queries to retrieve multiple page items from Storyblok with filtering options. Use when you need to fetch page content with filters like path prefix, publish date, or slug exclusions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | GraphQL query string for PageItems. PageItems is a dynamically generated query type for the 'page' content type that retrieves multiple page items. Include fields like id, name, slug, full_slug, uuid, content, published_at, etc. |
| `variables` | object | No | Optional variables for the GraphQL query. Can include filters like starts_with (filter by path), first_published_at_lt (filter by publish date), excluding_slugs (exclude specific slugs), or pagination parameters like first, after, last, before. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Retrieve Links via GraphQL

**Slug:** `STORYBLOK_RETRIEVE_LINKS_GRAPHQL`

Tool to retrieve links for navigation using Storyblok's GraphQL API. Use when you need to fetch navigation links with their metadata (id, uuid, slug, name, published status).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | GraphQL query string to retrieve links. Default query fetches all standard link fields (id, uuid, slug, name, published). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Retrieve Tags via GraphQL

**Slug:** `STORYBLOK_RETRIEVE_TAGS`

Tool to retrieve tags from Storyblok via GraphQL API. Use when you need to fetch available tags for content organization and filtering.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | GraphQL query to retrieve tags. Use the default query to fetch all tag names, or customize to fetch additional tag fields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
