Storyblok · Capability
Storyblok Content Delivery API v2 — Stories
Storyblok Content Delivery API v2 — Stories. 3 operations. Lead operation: List multiple stories. Self-contained Naftiko capability covering one Storyblok business surface.
What You Can Do
GET
Liststories
— List multiple stories
/v1/stories
GET
Getstorybyid
— Retrieve a single story by ID
/v1/stories/{id}
GET
Getstorybyslug
— Retrieve a single story by slug
/v1/stories/{slug}
MCP Tools
list-multiple-stories
List multiple stories
read-only
idempotent
retrieve-single-story-id
Retrieve a single story by ID
read-only
idempotent
retrieve-single-story-slug
Retrieve a single story by slug
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Storyblok Content Delivery API v2 — Stories
description: 'Storyblok Content Delivery API v2 — Stories. 3 operations. Lead operation: List multiple stories. Self-contained
Naftiko capability covering one Storyblok business surface.'
tags:
- Storyblok
- Stories
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
STORYBLOK_API_KEY: STORYBLOK_API_KEY
capability:
consumes:
- type: http
namespace: content-delivery-api-v2-stories
baseUri: https://api.storyblok.com/v2/cdn
description: Storyblok Content Delivery API v2 — Stories business capability. Self-contained, no shared references.
resources:
- name: stories
path: /stories
operations:
- name: liststories
method: GET
description: List multiple stories
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: starts_with
in: query
type: string
description: Filter stories by full_slug prefix. Only stories whose full_slug starts with the given value are returned.
Useful for fetching content within a specific folder.
- name: by_slugs
in: query
type: string
description: Comma-separated list of full_slug values to retrieve specific stories by their slugs.
- name: excluding_slugs
in: query
type: string
description: Comma-separated list of full_slug values to exclude from the results.
- name: with_tag
in: query
type: string
description: Comma-separated list of tag slugs to filter stories by. Multiple tags are treated as an OR condition.
- name: is_startpage
in: query
type: integer
description: Set to 1 to only return folder start pages. Set to 0 to exclude them. Omit to return all stories.
- name: sort_by
in: query
type: string
description: 'Sort the response by a specific field and direction. Supports all default story fields and custom
fields defined in the component schema. Format: field:asc or f'
- name: search_term
in: query
type: string
description: Full-text search term to filter stories whose content fields contain the given string.
- name: resolve_relations
in: query
type: string
description: Comma-separated list of component.field paths to resolve referenced story relations inline in the response.
- name: resolve_links
in: query
type: string
description: Set to story to resolve story link fields. Set to url to resolve to the story URL string.
- name: language
in: query
type: string
description: ISO language code to return the story content in the specified language. Falls back to the default
language if the translation is unavailable.
- name: fallback_lang
in: query
type: string
description: Fallback language code used when the requested language translation is not available.
- name: filter_query
in: query
type: object
description: Object to filter stories by custom field values using operators such as in, not_in, like, gt-int, lt-int.
Keys are field paths relative to the story content obj
- name: by_uuids
in: query
type: string
description: Comma-separated list of story UUIDs to retrieve specific stories by their unique identifiers.
- name: excluding_ids
in: query
type: string
description: Comma-separated list of story IDs to exclude from the results.
- name: per_page
in: query
type: integer
description: Number of stories to return per page. Maximum 100.
- name: cv
in: query
type: integer
description: Cache version timestamp. Pass the current Unix timestamp to bypass CDN caching and retrieve the latest
content.
- name: stories-id
path: /stories/{id}
operations:
- name: getstorybyid
method: GET
description: Retrieve a single story by ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: language
in: query
type: string
description: ISO language code to return the story content in.
- name: cv
in: query
type: integer
description: Cache version timestamp to bypass CDN caching.
- name: stories-slug
path: /stories/{slug}
operations:
- name: getstorybyslug
method: GET
description: Retrieve a single story by slug
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: resolve_relations
in: query
type: string
description: Comma-separated list of component.field paths to resolve referenced story relations inline in the response.
- name: resolve_links
in: query
type: string
description: Set to story to resolve story link fields. Set to url to resolve to the story URL string.
- name: language
in: query
type: string
description: ISO language code to return the story content in the specified language.
- name: cv
in: query
type: integer
description: Cache version timestamp to bypass CDN caching.
authentication:
type: apikey
key: token
value: '{{env.STORYBLOK_API_KEY}}'
placement: query
exposes:
- type: rest
namespace: content-delivery-api-v2-stories-rest
port: 8080
description: REST adapter for Storyblok Content Delivery API v2 — Stories. One Spectral-compliant resource per consumed
operation, prefixed with /v1.
resources:
- path: /v1/stories
name: stories
description: REST surface for stories.
operations:
- method: GET
name: liststories
description: List multiple stories
call: content-delivery-api-v2-stories.liststories
with:
starts_with: rest.starts_with
by_slugs: rest.by_slugs
excluding_slugs: rest.excluding_slugs
with_tag: rest.with_tag
is_startpage: rest.is_startpage
sort_by: rest.sort_by
search_term: rest.search_term
resolve_relations: rest.resolve_relations
resolve_links: rest.resolve_links
language: rest.language
fallback_lang: rest.fallback_lang
filter_query: rest.filter_query
by_uuids: rest.by_uuids
excluding_ids: rest.excluding_ids
per_page: rest.per_page
cv: rest.cv
outputParameters:
- type: object
mapping: $.
- path: /v1/stories/{id}
name: stories-id
description: REST surface for stories-id.
operations:
- method: GET
name: getstorybyid
description: Retrieve a single story by ID
call: content-delivery-api-v2-stories.getstorybyid
with:
language: rest.language
cv: rest.cv
outputParameters:
- type: object
mapping: $.
- path: /v1/stories/{slug}
name: stories-slug
description: REST surface for stories-slug.
operations:
- method: GET
name: getstorybyslug
description: Retrieve a single story by slug
call: content-delivery-api-v2-stories.getstorybyslug
with:
resolve_relations: rest.resolve_relations
resolve_links: rest.resolve_links
language: rest.language
cv: rest.cv
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: content-delivery-api-v2-stories-mcp
port: 9090
transport: http
description: MCP adapter for Storyblok Content Delivery API v2 — Stories. One tool per consumed operation, routed inline
through this capability's consumes block.
tools:
- name: list-multiple-stories
description: List multiple stories
hints:
readOnly: true
destructive: false
idempotent: true
call: content-delivery-api-v2-stories.liststories
with:
starts_with: tools.starts_with
by_slugs: tools.by_slugs
excluding_slugs: tools.excluding_slugs
with_tag: tools.with_tag
is_startpage: tools.is_startpage
sort_by: tools.sort_by
search_term: tools.search_term
resolve_relations: tools.resolve_relations
resolve_links: tools.resolve_links
language: tools.language
fallback_lang: tools.fallback_lang
filter_query: tools.filter_query
by_uuids: tools.by_uuids
excluding_ids: tools.excluding_ids
per_page: tools.per_page
cv: tools.cv
outputParameters:
- type: object
mapping: $.
- name: retrieve-single-story-id
description: Retrieve a single story by ID
hints:
readOnly: true
destructive: false
idempotent: true
call: content-delivery-api-v2-stories.getstorybyid
with:
language: tools.language
cv: tools.cv
outputParameters:
- type: object
mapping: $.
- name: retrieve-single-story-slug
description: Retrieve a single story by slug
hints:
readOnly: true
destructive: false
idempotent: true
call: content-delivery-api-v2-stories.getstorybyslug
with:
resolve_relations: tools.resolve_relations
resolve_links: tools.resolve_links
language: tools.language
cv: tools.cv
outputParameters:
- type: object
mapping: $.