Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.
Blog name.
Optional logo URL.
Optional blog description.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| logo | any | Optional logo URL. |
| name* | string | Blog name. |
| description | any | Optional blog description. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"logo": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional logo URL."
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Blog name."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional blog description."
}
},
"additionalProperties": false
}Create a new collection with name, slug, and optional description.
| Argument | Type | Description |
|---|---|---|
| name* | string | Collection name. |
| slug* | string | Collection slug. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| description | string | Optional collection description. |
{
"type": "object",
"required": [
"blogId",
"name",
"slug"
],
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "Collection name."
},
"slug": {
"type": "string",
"pattern": "^\\s*(?:$|(?=[a-zA-Z0-9_-]{1,32}\\s*$)(?!(?:[aA][dD][mM][iI][nN]|[lL][oO][gG][iI][nN]|[sS][iI][gG][nN][uU][pP]|[aA][pP][iI]|[aA][sS][sS][eE][tT][sS]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][iI][tT][eE][mM][aA][pP]-[iI][nN][dD][eE][xX]\\.[xX][mM][lL]|[fF][eE][eE][dD]|[rR][sS][sS]|[tT][aA][gG][sS]|[tT][aA][gG]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN][sS]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN]|[pP][aA][gG][eE][sS]|[pP][aA][gG][eE]|[sS][iI][tT][eE][mM][aA][pP]|[sS][iI][tT][eE][mM][aA][pP][sS]|[sS][eE][aA][rR][cC][hH]|[dD][aA][sS][hH][bB][oO][aA][rR][dD]|[sS][eE][tT][tT][iI][nN][gG][sS]|[pP][rR][oO][fF][iI][lL][eE]|[aA][uU][tT][hH][oO][rR][sS])\\s*$)(?!.*--)[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?)\\s*$",
"description": "Collection slug."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"description": {
"type": "string",
"maxLength": 256,
"description": "Optional collection description."
}
},
"additionalProperties": false
}Create a new static page with title, HTML body, metadata, slug, image, and status. status=published makes the page live.
| Argument | Type | Description |
|---|---|---|
| body* | string | Page HTML body. |
| slug | any | Page slug. Auto-generated from title when omitted. |
| image | any | Optional featured image path or URL. Use upload_image for local files. |
| title* | string | Page title. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| status | string | Publishing status. Default: draft. |
| metadata | array | Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer. |
{
"type": "object",
"required": [
"blogId",
"title",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 1000000,
"minLength": 1,
"description": "Page HTML body."
},
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Page slug. Auto-generated from title when omitted."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional featured image path or URL. Use upload_image for local files."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Page title."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"default": "draft",
"description": "Publishing status. Default: draft."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"additionalProperties": false
}Create a new blog post with title, HTML content, author, collection, tags, metadata, slug, image, and publishing options. status=published makes the post live. collection_id is optional; omit it to use the empty-slug default Posts collection. If that default does not exist, provide collection_id (call list_collections or create_collection).
| Argument | Type | Description |
|---|---|---|
| slug | any | Post slug. Auto-generated from title when omitted. |
| tags | array | Tag names. Maximum 10 tags. |
| image | any | Optional featured image path or URL. Use upload_image for local files. |
| title* | string | Post title. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| status | string | Publishing status. Default: draft. |
| content* | string | Post HTML content. |
| authorId | string | Optional author user ID from list_blog_members. Assigning another member requires owner or admin access. |
| metadata |
Create a redirect for a blog. Requires owner or admin access through account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| active | boolean | Whether this redirect should be applied. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| destination* | string | Destination site path or absolute HTTP(S) URL. |
| source_path* | string | Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed. |
| status_code | any | HTTP redirect status code. Use 301 for permanent redirects and 302 for temporary redirects. |
{
"type": "object",
"required": [
"blogId",
"source_path",
"destination"
],
"properties": {
"active": {
"type": "boolean",
"default": true,
"description": "Whether this redirect should be applied."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"destination": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Destination site path or absolute HTTP(S) URL."
},
"source_path": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed."
},
"status_code": {
"anyOf": [
{
"type": "number",
"const": 301
},
{
"type": "number",
"const": 302
}
],
"default": 301,
"description": "HTTP redirect status code. Use 301 for permanent redirects and 302 for temporary redirects."
}
},
"additionalProperties": false
}Create a new blog tag by name. Requires permission to manage taxonomy.
| Argument | Type | Description |
|---|---|---|
| name* | string | New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}Approve a pending content review or request changes. Approving a staged update to published content applies that revision.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| comment | string | Review comment. Required when requesting changes; maximum 2,000 characters. |
| decision* | string | Review decision. |
| reviewId* | string | Review ID from list_content_reviews. |
{
"type": "object",
"required": [
"blogId",
"reviewId",
"decision"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"comment": {
"type": "string",
"maxLength": 2000,
"description": "Review comment. Required when requesting changes; maximum 2,000 characters."
},
"decision": {
"enum": [
"approved",
"changes_requested"
],
"type": "string",
"description": "Review decision."
},
"reviewId": {
"type": "string",
"minLength": 1,
"description": "Review ID from list_content_reviews."
}
},
"additionalProperties": false
}Delete a blog by ID. Only the blog owner can delete. Active subscriptions are cancelled automatically.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"additionalProperties": false
}Delete a collection by ID and optionally reassign its posts to another collection.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| reassign_to | string | Optional collection ID that should receive the deleted collection's posts. |
| collectionId* | string | Collection ID. |
{
"type": "object",
"required": [
"blogId",
"collectionId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"reassign_to": {
"type": "string",
"minLength": 1,
"description": "Optional collection ID that should receive the deleted collection's posts."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Collection ID."
}
},
"additionalProperties": false
}Delete a static page by ID.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| pageId* | string | Page ID. |
{
"type": "object",
"required": [
"blogId",
"pageId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"pageId": {
"type": "string",
"minLength": 1,
"description": "Page ID."
}
},
"additionalProperties": false
}Delete a blog post by ID.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| postId* | string | Post ID. |
{
"type": "object",
"required": [
"blogId",
"postId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"postId": {
"type": "string",
"minLength": 1,
"description": "Post ID."
}
},
"additionalProperties": false
}Delete a redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| redirectId* | string | Redirect ID. |
{
"type": "object",
"required": [
"blogId",
"redirectId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"redirectId": {
"type": "string",
"minLength": 1,
"description": "Redirect ID."
}
},
"additionalProperties": false
}Delete a blog tag by ID.
| Argument | Type | Description |
|---|---|---|
| tagId* | string | Tag ID. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId",
"tagId"
],
"properties": {
"tagId": {
"type": "string",
"minLength": 1,
"description": "Tag ID."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}Delete a custom theme file from a blog. Requires a Pro subscription. Cannot delete built-in-only files.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| file_path* | string | Theme file path relative to the theme root. |
{
"type": "object",
"required": [
"blogId",
"file_path"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"file_path": {
"type": "string",
"minLength": 1,
"description": "Theme file path relative to the theme root."
}
},
"additionalProperties": false
}Get a single blog by ID, including settings like subdomain, domain, logo, and metadata.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"additionalProperties": false
}Get custom metadata for a blog (SEO fields, themeId, etc.). Does not include themeSettings values.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"additionalProperties": false
}Get a single collection by ID, including its post count.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| collectionId* | string | Collection ID. |
{
"type": "object",
"required": [
"blogId",
"collectionId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Collection ID."
}
},
"additionalProperties": false
}Get one saved post or page revision, including its complete content snapshot.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| contentId* | string | Post or page ID. |
| revisionId* | string | Revision ID from list_content_revisions. |
| contentType* | string | Content type. |
{
"type": "object",
"required": [
"blogId",
"contentType",
"contentId",
"revisionId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"revisionId": {
"type": "string",
"minLength": 1,
"description": "Revision ID from list_content_revisions."
},
"contentType": {
"enum": [
"post",
"page"
],
"type": "string",
"description": "Content type."
}
},
"additionalProperties": false
}Get the latest review associated with the newest saved revision of a post or page.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| contentId* | string | Post or page ID. |
| contentType* | string | Content type. |
{
"type": "object",
"required": [
"blogId",
"contentType",
"contentId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"contentType": {
"enum": [
"post",
"page"
],
"type": "string",
"description": "Content type."
}
},
"additionalProperties": false
}Get a single static page by ID.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| pageId* | string | Page ID. |
{
"type": "object",
"required": [
"blogId",
"pageId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"pageId": {
"type": "string",
"minLength": 1,
"description": "Page ID."
}
},
"additionalProperties": false
}Get a single blog post by ID.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| postId* | string | Post ID. |
{
"type": "object",
"required": [
"blogId",
"postId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"postId": {
"type": "string",
"minLength": 1,
"description": "Post ID."
}
},
"additionalProperties": false
}Get a single redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| redirectId* | string | Redirect ID. |
{
"type": "object",
"required": [
"blogId",
"redirectId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"redirectId": {
"type": "string",
"minLength": 1,
"description": "Redirect ID."
}
},
"additionalProperties": false
}Read a theme file by path (e.g. layouts/theme.liquid). Falls back to the active built-in theme when no custom copy exists.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| file_path* | string | Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt. |
{
"type": "object",
"required": [
"blogId",
"file_path"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"file_path": {
"type": "string",
"pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$",
"minLength": 1,
"description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."
}
},
"additionalProperties": false
}Get theme settings schema and current values for a blog's active theme.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}List built-in themes available for a blog and show which theme is currently active.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}List blog members who can be assigned as post authors. Use a member id as authorId in create_post or update_post.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
}
},
"additionalProperties": false
}List the authenticated user's accessible blogs so later tool calls can target the right blogId.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List all collections for a blog.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}List content review requests for a blog, filtered by status.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| status | string | Review status. Default: pending. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"enum": [
"pending",
"approved",
"changes_requested",
"superseded"
],
"type": "string",
"default": "pending",
"description": "Review status. Default: pending."
}
},
"additionalProperties": false
}List the saved revision history for a post or page. Returns revision metadata without full snapshots.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| contentId* | string | Post or page ID. |
| contentType* | string | Content type. |
{
"type": "object",
"required": [
"blogId",
"contentType",
"contentId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"contentType": {
"enum": [
"post",
"page"
],
"type": "string",
"description": "Content type."
}
},
"additionalProperties": false
}List static pages with pagination, filtering, and sorting.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Default: 1. |
| limit | integer | Page size. Default: 30, maximum: 100. |
| order | string | Sort direction. Default: desc. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| status | string | Filter by page status. |
| orderBy | string | Sort field. Default: updatedAt. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number. Default: 1."
},
"limit": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1,
"description": "Page size. Default: 30, maximum: 100."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Sort direction. Default: desc."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"description": "Filter by page status."
},
"orderBy": {
"enum": [
"createdAt",
"updatedAt",
"title"
],
"type": "string",
"default": "updatedAt",
"description": "Sort field. Default: updatedAt."
}
},
"additionalProperties": false
}List blog posts with pagination, filtering, and sorting by status, collection, tag, author, or date.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Default: 1. |
| limit | integer | Page size. Default: 30, maximum: 100. |
| order | string | Sort direction. Default: desc. |
| tagId | string | Filter by tag ID. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| status | string | Filter by post status. |
| userId | string | Filter by author user ID. |
| orderBy | string | Sort field. Default: createdAt. |
| collectionId | string | Filter by collection ID. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number. Default: 1."
},
"limit": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1,
"description": "Page size. Default: 30, maximum: 100."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "desc",
"description": "Sort direction. Default: desc."
},
"tagId": {
"type": "string",
"minLength": 1,
"description": "Filter by tag ID."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"enum": [
"draft",
"published",
"scheduled",
"all"
],
"type": "string",
"description": "Filter by post status."
},
"userId": {
"type": "string",
"minLength": 1,
"description": "Filter by author user ID."
},
"orderBy": {
"enum": [
"createdAt",
"updatedAt",
"title",
"publishedAt"
],
"type": "string",
"default": "createdAt",
"description": "Sort field. Default: createdAt."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Filter by collection ID."
}
},
"additionalProperties": false
}List redirects for a blog with search, status, type, and pagination filters. Requires owner or admin access through account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| type | string | Filter by HTTP status code. |
| limit | integer | Redirects per page, from 1 to 100. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| search | string | Search source paths and destinations. |
| status | string | Filter by active state. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Page number, starting at 1."
},
"type": {
"enum": [
"all",
"301",
"302"
],
"type": "string",
"default": "all",
"description": "Filter by HTTP status code."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Redirects per page, from 1 to 100."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"search": {
"type": "string",
"default": "",
"maxLength": 200,
"description": "Search source paths and destinations."
},
"status": {
"enum": [
"all",
"active",
"inactive"
],
"type": "string",
"default": "all",
"description": "Filter by active state."
}
},
"additionalProperties": false
}List blog tags with optional case-insensitive search filtering.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| search | string | Optional tag name search filter. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"search": {
"type": "string",
"description": "Optional tag name search filter."
}
},
"additionalProperties": false
}List the theme file tree for a blog (layouts, templates, assets, etc.).
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}Submit the latest saved revision of a draft post or page for review.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| comment | string | Optional review comment. Maximum 2,000 characters. |
| contentId* | string | Post or page ID. |
| contentType* | string | Content type. |
{
"type": "object",
"required": [
"blogId",
"contentType",
"contentId"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"comment": {
"type": "string",
"maxLength": 2000,
"description": "Optional review comment. Maximum 2,000 characters."
},
"contentId": {
"type": "string",
"minLength": 1,
"description": "Post or page ID."
},
"contentType": {
"enum": [
"post",
"page"
],
"type": "string",
"description": "Content type."
}
},
"additionalProperties": false
}Switch a blog to a different built-in theme or to custom if theme files exist.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| theme_id* | string | Theme ID. Use custom for blogs with edited theme files. |
{
"type": "object",
"required": [
"blogId",
"theme_id"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"theme_id": {
"enum": [
"just",
"obsidian",
"linen",
"tribune",
"beacon",
"aside",
"changes",
"custom"
],
"type": "string",
"description": "Theme ID. Use custom for blogs with edited theme files."
}
},
"additionalProperties": false
}Update blog settings including name, subdomain, description, and logo. Requires owner or admin access.
| Argument | Type | Description |
|---|---|---|
| logo | any | Updated logo URL. |
| name* | string | Updated blog name. |
| blogId* | string | Blog ID. |
| subdomain* | string | Updated blog subdomain. |
| description | any | Updated blog description. |
{
"type": "object",
"required": [
"blogId",
"name",
"subdomain"
],
"properties": {
"logo": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated logo URL."
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Updated blog name."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"subdomain": {
"type": "string",
"pattern": "^(?!(?:api|admin|www|mail|app|dashboard|login|signup|blog|static|assets)$)(?!.*--)[a-z0-9]([a-z0-9-]*[a-z0-9])?$",
"maxLength": 40,
"minLength": 1,
"description": "Updated blog subdomain."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated blog description."
}
},
"additionalProperties": false
}Configure or remove a blog's custom domain. Use domain only for custom domains (requires CNAME/A DNS). Use domain + domain_slug for subdirectory hosting (requires TXT DNS verification). Pass an empty domain string to remove the domain.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
| domain* | any | Custom domain (e.g. blog.example.com) or root domain for subdirectory mode. Pass empty string to remove. |
| domain_slug | any | Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog). |
{
"type": "object",
"required": [
"blogId",
"domain"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"domain": {
"anyOf": [
{
"type": "string",
"pattern": "^[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$",
"maxLength": 100,
"minLength": 1
},
{
"type": "string",
"const": ""
}
],
"description": "Custom domain (e.g. blog.example.com) or root domain for subdirectory mode. Pass empty string to remove."
},
"domain_slug": {
"anyOf": [
{
"type": "string",
"pattern": "^[a-zA-Z0-9-_]*$",
"maxLength": 50
},
{
"type": "null"
}
],
"description": "Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog)."
}
},
"additionalProperties": false
}Merge custom metadata into a blog. Pass only the keys you want to add or update. Theme changes use the dedicated theme tools.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. |
| metadata* | array | Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings. |
{
"type": "object",
"required": [
"blogId",
"metadata"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"pattern": "^(?!(?:themeId|themeSettings|hasThemeFiles|themeUpdatedAt|customThemeBaseId)$).+$"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"description": "Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings."
}
},
"additionalProperties": false
}Update an existing collection's name, slug, or description.
| Argument | Type | Description |
|---|---|---|
| name | string | Updated collection name. |
| slug | string | Updated collection slug. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| description | string | Updated collection description. |
| collectionId* | string | Collection ID. |
{
"type": "object",
"required": [
"blogId",
"collectionId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "Updated collection name."
},
"slug": {
"type": "string",
"pattern": "^\\s*(?:$|(?=[a-zA-Z0-9_-]{1,32}\\s*$)(?!(?:[aA][dD][mM][iI][nN]|[lL][oO][gG][iI][nN]|[sS][iI][gG][nN][uU][pP]|[aA][pP][iI]|[aA][sS][sS][eE][tT][sS]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][iI][tT][eE][mM][aA][pP]-[iI][nN][dD][eE][xX]\\.[xX][mM][lL]|[fF][eE][eE][dD]|[rR][sS][sS]|[tT][aA][gG][sS]|[tT][aA][gG]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN][sS]|[cC][oO][lL][lL][eE][cC][tT][iI][oO][nN]|[pP][aA][gG][eE][sS]|[pP][aA][gG][eE]|[sS][iI][tT][eE][mM][aA][pP]|[sS][iI][tT][eE][mM][aA][pP][sS]|[sS][eE][aA][rR][cC][hH]|[dD][aA][sS][hH][bB][oO][aA][rR][dD]|[sS][eE][tT][tT][iI][nN][gG][sS]|[pP][rR][oO][fF][iI][lL][eE]|[aA][uU][tT][hH][oO][rR][sS])\\s*$)(?!.*--)[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?)\\s*$",
"description": "Updated collection slug."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"description": {
"type": "string",
"maxLength": 256,
"description": "Updated collection description."
},
"collectionId": {
"type": "string",
"minLength": 1,
"description": "Collection ID."
}
},
"additionalProperties": false
}Update any editable field on an existing static page.
| Argument | Type | Description |
|---|---|---|
| body | string | Updated HTML body. |
| slug | string | Updated page slug. |
| image | any | Updated featured image path or URL. Use upload_image for local files. |
| title | string | Updated page title. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| pageId* | string | Page ID. |
| status | string | Updated publishing status. |
| metadata | array | Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer. |
{
"type": "object",
"required": [
"blogId",
"pageId"
],
"properties": {
"body": {
"type": "string",
"maxLength": 1000000,
"minLength": 1,
"description": "Updated HTML body."
},
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Updated page slug."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated featured image path or URL. Use upload_image for local files."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Updated page title."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"pageId": {
"type": "string",
"minLength": 1,
"description": "Page ID."
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"description": "Updated publishing status."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
}
},
"additionalProperties": false
}Update any editable field on an existing blog post, including its author.
| Argument | Type | Description |
|---|---|---|
| slug | string | Updated post slug. |
| tags | array | Updated tag names. |
| image | any | Updated featured image path or URL. Use upload_image for local files. |
| title | string | Updated post title. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| postId* | string | Post ID. |
| status | string | Updated publishing status. |
| content | string | Updated HTML content. |
| authorId | string | Updated author user ID from list_blog_members. Reassignment requires owner or admin access. |
| metadata | array |
Update a redirect source, destination, status code, or active state. Requires owner or admin access through account-level OAuth or a user-scoped API key.
| Argument | Type | Description |
|---|---|---|
| active | boolean | Whether this redirect should be applied. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| redirectId* | string | Redirect ID. |
| destination | string | Updated destination site path or absolute HTTP(S) URL. |
| source_path | string | Updated incoming site path, starting with a single /. |
| status_code | any | Updated HTTP redirect status code. |
{
"type": "object",
"required": [
"blogId",
"redirectId"
],
"properties": {
"active": {
"type": "boolean",
"description": "Whether this redirect should be applied."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"redirectId": {
"type": "string",
"minLength": 1,
"description": "Redirect ID."
},
"destination": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Updated destination site path or absolute HTTP(S) URL."
},
"source_path": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Updated incoming site path, starting with a single /."
},
"status_code": {
"anyOf": [
{
"type": "number",
"const": 301
},
{
"type": "number",
"const": 302
}
],
"description": "Updated HTTP redirect status code."
}
},
"additionalProperties": false
}Rename a blog tag.
| Argument | Type | Description |
|---|---|---|
| name* | string | New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods. |
| tagId* | string | Tag ID. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
{
"type": "object",
"required": [
"blogId",
"tagId",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods."
},
"tagId": {
"type": "string",
"minLength": 1,
"description": "Tag ID."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
}
},
"additionalProperties": false
}Create or update a theme file. Requires a Pro subscription. Copies the built-in theme first if no custom files exist yet.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| content* | string | Full file content. |
| file_path* | string | Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt. |
{
"type": "object",
"required": [
"blogId",
"file_path",
"content"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"content": {
"type": "string",
"description": "Full file content."
},
"file_path": {
"type": "string",
"pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$",
"minLength": 1,
"description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."
}
},
"additionalProperties": false
}Update one or more theme setting values for a blog. Unspecified values are preserved. Use get_theme_settings first to discover valid keys.
| Argument | Type | Description |
|---|---|---|
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| values* | string | JSON object containing theme setting names and values from get_theme_settings. |
{
"type": "object",
"required": [
"blogId",
"values"
],
"properties": {
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"values": {
"type": "string",
"minLength": 2,
"description": "JSON object containing theme setting names and values from get_theme_settings."
}
},
"additionalProperties": false
}Upload an image to a blog. Use the returned path as the image value when creating or updating a post, page, or blog.
| Argument | Type | Description |
|---|---|---|
| data* | string | Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB. |
| blogId* | string | Blog ID. Use list_blogs to discover available blog IDs. |
| filename* | string | Original image filename, including its extension. |
| mimeType* | string | Image MIME type. SVG is supported only for logo uploads. |
| uploadType | string | Where the image will be used. Default: post. |
{
"type": "object",
"required": [
"blogId",
"filename",
"mimeType",
"data"
],
"properties": {
"data": {
"type": "string",
"pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
"maxLength": 11184812,
"minLength": 1,
"description": "Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"filename": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Original image filename, including its extension."
},
"mimeType": {
"enum": [
"image/png",
"image/jpeg",
"image/webp",
"image/gif",
"image/svg+xml"
],
"type": "string",
"description": "Image MIME type. SVG is supported only for logo uploads."
},
"uploadType": {
"enum": [
"post",
"page",
"blog",
"logo"
],
"type": "string",
"default": "post",
"description": "Where the image will be used. Default: post."
}
},
"additionalProperties": false
}| array |
| Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer. |
| published_at | any | Optional publish datetime in ISO 8601 format. |
| collection_id | string | Optional collection ID. When omitted, the collection with an empty slug is used. If none exists, use list_collections to choose a collection_id, or create_collection to create one first. |
{
"type": "object",
"required": [
"blogId",
"title",
"content"
],
"properties": {
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Post slug. Auto-generated from title when omitted."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"default": [],
"maxItems": 10,
"description": "Tag names. Maximum 10 tags."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Optional featured image path or URL. Use upload_image for local files."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Post title."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"default": "draft",
"description": "Publishing status. Default: draft."
},
"content": {
"type": "string",
"maxLength": 1000000,
"minLength": 1,
"description": "Post HTML content."
},
"authorId": {
"type": "string",
"minLength": 1,
"description": "Optional author user ID from list_blog_members. Assigning another member requires owner or admin access."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
},
"published_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"description": "Optional publish datetime in ISO 8601 format."
},
"collection_id": {
"type": "string",
"minLength": 1,
"description": "Optional collection ID. When omitted, the collection with an empty slug is used. If none exists, use list_collections to choose a collection_id, or create_collection to create one first."
}
},
"additionalProperties": false
}| Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer. |
| published_at | any | Updated publish datetime in ISO 8601 format. |
| collection_id | string | Updated collection ID. |
{
"type": "object",
"required": [
"blogId",
"postId"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Updated post slug."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"maxItems": 10,
"description": "Updated tag names."
},
"image": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Updated featured image path or URL. Use upload_image for local files."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Updated post title."
},
"blogId": {
"type": "string",
"minLength": 1,
"description": "Blog ID. Use list_blogs to discover available blog IDs."
},
"postId": {
"type": "string",
"minLength": 1,
"description": "Post ID."
},
"status": {
"enum": [
"draft",
"published"
],
"type": "string",
"description": "Updated publishing status."
},
"content": {
"type": "string",
"maxLength": 1000000,
"minLength": 1,
"description": "Updated HTML content."
},
"authorId": {
"type": "string",
"minLength": 1,
"description": "Updated author user ID from list_blog_members. Reassignment requires owner or admin access."
},
"metadata": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."
},
"published_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"description": "Updated publish datetime in ISO 8601 format."
},
"collection_id": {
"type": "string",
"minLength": 1,
"description": "Updated collection ID."
}
},
"additionalProperties": false
}