strapi_list_blog_posts
Retrieve blog posts from Strapi CMS with filtering by status, category, author, tags, search, and sorting options.
Instructions
List all blog posts with advanced filtering, sorting, and pagination
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| pageSize | No | Results per page | |
| status | No | Filter by status | all |
| category_id | No | Filter by category ID | |
| author_id | No | Filter by author ID | |
| tag_id | No | Filter by tag ID | |
| sort | No | Sort field and direction (e.g., "publishedAt:desc", "title:asc") | createdAt:desc |
| search | No | Search in title and content |
Implementation Reference
- index.js:461-481 (handler)The main handler function that executes the strapi_list_blog_posts tool. It makes a GET request to Strapi's content-manager API for blog-posts with pagination parameters and returns the JSON response.async listBlogPosts (headers, args = {}) { const { page = 1, pageSize = 25, status = 'all' } = args const response = await axios.get( `${this.strapiUrl}/content-manager/collection-types/api::blog-post.blog-post`, { headers, params: { page, pageSize } } ) return { content: [{ type: 'text', text: JSON.stringify(response.data, null, 2) }] } }
- index.js:125-137 (schema)The input schema defining the parameters accepted by the strapi_list_blog_posts tool, including pagination, filtering, sorting, and search options.inputSchema: { type: 'object', properties: { page: { type: 'number', description: 'Page number', default: 1 }, pageSize: { type: 'number', description: 'Results per page', default: 25 }, status: { type: 'string', enum: ['published', 'draft', 'all'], description: 'Filter by status', default: 'all' }, category_id: { type: 'number', description: 'Filter by category ID' }, author_id: { type: 'number', description: 'Filter by author ID' }, tag_id: { type: 'number', description: 'Filter by tag ID' }, sort: { type: 'string', description: 'Sort field and direction (e.g., "publishedAt:desc", "title:asc")', default: 'createdAt:desc' }, search: { type: 'string', description: 'Search in title and content' } } }
- index.js:122-138 (registration)The tool registration in the ListTools response, including name, description, and input schema for strapi_list_blog_posts.{ name: 'strapi_list_blog_posts', description: 'List all blog posts with advanced filtering, sorting, and pagination', inputSchema: { type: 'object', properties: { page: { type: 'number', description: 'Page number', default: 1 }, pageSize: { type: 'number', description: 'Results per page', default: 25 }, status: { type: 'string', enum: ['published', 'draft', 'all'], description: 'Filter by status', default: 'all' }, category_id: { type: 'number', description: 'Filter by category ID' }, author_id: { type: 'number', description: 'Filter by author ID' }, tag_id: { type: 'number', description: 'Filter by tag ID' }, sort: { type: 'string', description: 'Sort field and direction (e.g., "publishedAt:desc", "title:asc")', default: 'createdAt:desc' }, search: { type: 'string', description: 'Search in title and content' } } } },
- index.js:368-370 (registration)The dispatch case in the CallToolRequest handler that routes to the listBlogPosts method for strapi_list_blog_posts.case 'strapi_list_blog_posts': return await this.listBlogPosts(headers, request.params.arguments)