Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,323counted 2 min ago
teppi

Server definition

Hash
sha256:914a11215e72f11d22ac47217e94d4bebd2a833ba1d662a9a586708c1c780ad2
What it is
What a remote MCP server returned when asked what it offers: 45 tools

The blob, as servednamed by its sha256

{ "instructions": "Use resources for public JustBlogged guidance. Content-management tools require OAuth or a JustBlogged bearer key.", "tools": [ { "description": "Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.", "inputSchema": { "additionalProperties": false, "properties": { "description": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Optional blog description." }, "logo": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Optional logo URL." }, "name": { "description": "Blog name.", "maxLength": 100, "minLength": 1, "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_blog", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Create a new collection with name, slug, and optional description.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "description": { "description": "Optional collection description.", "maxLength": 256, "type": "string" }, "name": { "description": "Collection name.", "maxLength": 32, "minLength": 1, "type": "string" }, "slug": { "description": "Collection slug.", "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*$", "type": "string" } }, "required": [ "blogId", "name", "slug" ], "type": "object" }, "name": "create_collection", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Create a new static page with title, HTML body, metadata, slug, image, and status.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "body": { "description": "Page HTML body.", "maxLength": 1000000, "minLength": 1, "type": "string" }, "image": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Optional featured image path or URL. Use upload_image for local files." }, "metadata": { "description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.", "items": { "additionalProperties": false, "properties": { "key": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": { "maxLength": 500, "minLength": 1, "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "maxItems": 20, "type": "array" }, "slug": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "description": "Page slug. Auto-generated from title when omitted." }, "status": { "default": "draft", "description": "Publishing status. Default: draft.", "enum": [ "draft", "published" ], "type": "string" }, "title": { "description": "Page title.", "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "blogId", "title", "body" ], "type": "object" }, "name": "create_page", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Create a new blog post with title, HTML content, author, collection, tags, metadata, slug, image, and publishing options.", "inputSchema": { "additionalProperties": false, "properties": { "authorId": { "description": "Optional author user ID from list_blog_members. Assigning another member requires owner or admin access.", "minLength": 1, "type": "string" }, "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "collection_id": { "description": "Collection ID for the post.", "minLength": 1, "type": "string" }, "content": { "description": "Post HTML content.", "maxLength": 1000000, "minLength": 1, "type": "string" }, "image": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Optional featured image path or URL. Use upload_image for local files." }, "metadata": { "description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.", "items": { "additionalProperties": false, "properties": { "key": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": { "maxLength": 500, "minLength": 1, "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "maxItems": 20, "type": "array" }, "published_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Optional publish datetime in ISO 8601 format." }, "slug": { "anyOf": [ { "maxLength": 100, "type": "string" }, { "type": "null" } ], "description": "Post slug. Auto-generated from title when omitted." }, "status": { "default": "draft", "description": "Publishing status. Default: draft.", "enum": [ "draft", "published" ], "type": "string" }, "tags": { "default": [], "description": "Tag names. Maximum 10 tags.", "items": { "maxLength": 50, "minLength": 1, "type": "string" }, "maxItems": 10, "type": "array" }, "title": { "description": "Post title.", "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "blogId", "title", "content", "collection_id" ], "type": "object" }, "name": "create_post", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Create a redirect for a blog. Requires owner or admin access through account-level OAuth or a user-scoped API key.", "inputSchema": { "additionalProperties": false, "properties": { "active": { "default": true, "description": "Whether this redirect should be applied.", "type": "boolean" }, "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "destination": { "description": "Destination site path or absolute HTTP(S) URL.", "maxLength": 2048, "minLength": 1, "type": "string" }, "source_path": { "description": "Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed.", "maxLength": 2048, "minLength": 1, "type": "string" }, "status_code": { "anyOf": [ { "const": 301, "type": "number" }, { "const": 302, "type": "number" } ], "default": 301, "description": "HTTP redirect status code. Use 301 for permanent redirects and 302 for temporary redirects." } }, "required": [ "blogId", "source_path", "destination" ], "type": "object" }, "name": "create_redirect", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Approve a pending content review or request changes. Approving a staged update to published content applies that revision.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "comment": { "description": "Review comment. Required when requesting changes; maximum 2,000 characters.", "maxLength": 2000, "type": "string" }, "decision": { "description": "Review decision.", "enum": [ "approved", "changes_requested" ], "type": "string" }, "reviewId": { "description": "Review ID from list_content_reviews.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "reviewId", "decision" ], "type": "object" }, "name": "decide_content_review", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a blog by ID. Only the blog owner can delete. Active subscriptions are cancelled automatically.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "delete_blog", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a collection by ID and optionally reassign its posts to another collection.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "collectionId": { "description": "Collection ID.", "minLength": 1, "type": "string" }, "reassign_to": { "description": "Optional collection ID that should receive the deleted collection's posts.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "collectionId" ], "type": "object" }, "name": "delete_collection", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a static page by ID.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "pageId": { "description": "Page ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "pageId" ], "type": "object" }, "name": "delete_page", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a blog post by ID.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "postId": { "description": "Post ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "postId" ], "type": "object" }, "name": "delete_post", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "redirectId": { "description": "Redirect ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "redirectId" ], "type": "object" }, "name": "delete_redirect", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a blog tag by ID.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "tagId": { "description": "Tag ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "tagId" ], "type": "object" }, "name": "delete_tag", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Delete a custom theme file from a blog. Requires a Pro subscription. Cannot delete built-in-only files.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "file_path": { "description": "Theme file path relative to the theme root.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "file_path" ], "type": "object" }, "name": "delete_theme_file", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get a single blog by ID, including settings like subdomain, domain, logo, and metadata.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "get_blog", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get custom metadata for a blog (SEO fields, themeId, etc.). Does not include themeSettings values.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "get_blog_metadata", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get one saved post or page revision, including its complete content snapshot.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "contentId": { "description": "Post or page ID.", "minLength": 1, "type": "string" }, "contentType": { "description": "Content type.", "enum": [ "post", "page" ], "type": "string" }, "revisionId": { "description": "Revision ID from list_content_revisions.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "contentType", "contentId", "revisionId" ], "type": "object" }, "name": "get_content_revision", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get the latest review associated with the newest saved revision of a post or page.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "contentId": { "description": "Post or page ID.", "minLength": 1, "type": "string" }, "contentType": { "description": "Content type.", "enum": [ "post", "page" ], "type": "string" } }, "required": [ "blogId", "contentType", "contentId" ], "type": "object" }, "name": "get_latest_content_review", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get a single static page by ID.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "pageId": { "description": "Page ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "pageId" ], "type": "object" }, "name": "get_page", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get a single blog post by ID.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "postId": { "description": "Post ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "postId" ], "type": "object" }, "name": "get_post", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Read a theme file by path (e.g. layouts/theme.liquid). Falls back to the active built-in theme when no custom copy exists.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "file_path": { "description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt.", "minLength": 1, "pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$", "type": "string" } }, "required": [ "blogId", "file_path" ], "type": "object" }, "name": "get_theme_file", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Get theme settings schema and current values for a blog's active theme.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "get_theme_settings", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List built-in themes available for a blog and show which theme is currently active.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_available_themes", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List blog members who can be assigned as post authors. Use a member id as authorId in create_post or update_post.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_blog_members", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List the authenticated user's accessible blogs so later tool calls can target the right blogId.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_blogs", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List all collections for a blog.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_collections", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List content review requests for a blog, filtered by status.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "status": { "default": "pending", "description": "Review status. Default: pending.", "enum": [ "pending", "approved", "changes_requested", "superseded" ], "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_content_reviews", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List the saved revision history for a post or page. Returns revision metadata without full snapshots.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "contentId": { "description": "Post or page ID.", "minLength": 1, "type": "string" }, "contentType": { "description": "Content type.", "enum": [ "post", "page" ], "type": "string" } }, "required": [ "blogId", "contentType", "contentId" ], "type": "object" }, "name": "list_content_revisions", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List static pages with pagination, filtering, and sorting.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "limit": { "default": 30, "description": "Page size. Default: 30, maximum: 100.", "maximum": 100, "minimum": 1, "type": "integer" }, "order": { "default": "desc", "description": "Sort direction. Default: desc.", "enum": [ "asc", "desc" ], "type": "string" }, "orderBy": { "default": "updatedAt", "description": "Sort field. Default: updatedAt.", "enum": [ "createdAt", "updatedAt", "title" ], "type": "string" }, "page": { "default": 1, "description": "Page number. Default: 1.", "minimum": 1, "type": "integer" }, "status": { "description": "Filter by page status.", "enum": [ "draft", "published" ], "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_pages", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List blog posts with pagination, filtering, and sorting by status, collection, tag, author, or date.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "collectionId": { "description": "Filter by collection ID.", "minLength": 1, "type": "string" }, "limit": { "default": 30, "description": "Page size. Default: 30, maximum: 100.", "maximum": 100, "minimum": 1, "type": "integer" }, "order": { "default": "desc", "description": "Sort direction. Default: desc.", "enum": [ "asc", "desc" ], "type": "string" }, "orderBy": { "default": "createdAt", "description": "Sort field. Default: createdAt.", "enum": [ "createdAt", "updatedAt", "title", "publishedAt" ], "type": "string" }, "page": { "default": 1, "description": "Page number. Default: 1.", "minimum": 1, "type": "integer" }, "status": { "description": "Filter by post status.", "enum": [ "draft", "published", "scheduled", "all" ], "type": "string" }, "tagId": { "description": "Filter by tag ID.", "minLength": 1, "type": "string" }, "userId": { "description": "Filter by author user ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_posts", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "limit": { "default": 20, "description": "Redirects per page, from 1 to 100.", "maximum": 100, "minimum": 1, "type": "integer" }, "page": { "default": 1, "description": "Page number, starting at 1.", "minimum": 1, "type": "integer" }, "search": { "default": "", "description": "Search source paths and destinations.", "maxLength": 200, "type": "string" }, "status": { "default": "all", "description": "Filter by active state.", "enum": [ "all", "active", "inactive" ], "type": "string" }, "type": { "default": "all", "description": "Filter by HTTP status code.", "enum": [ "all", "301", "302" ], "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_redirects", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List blog tags with optional case-insensitive search filtering.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "search": { "description": "Optional tag name search filter.", "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_tags", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "List the theme file tree for a blog (layouts, templates, assets, etc.).", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" } }, "required": [ "blogId" ], "type": "object" }, "name": "list_theme_files", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Submit the latest saved revision of a draft post or page for review.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "comment": { "description": "Optional review comment. Maximum 2,000 characters.", "maxLength": 2000, "type": "string" }, "contentId": { "description": "Post or page ID.", "minLength": 1, "type": "string" }, "contentType": { "description": "Content type.", "enum": [ "post", "page" ], "type": "string" } }, "required": [ "blogId", "contentType", "contentId" ], "type": "object" }, "name": "submit_content_review", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Switch a blog to a different built-in theme or to custom if theme files exist.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "theme_id": { "description": "Theme ID. Use custom for blogs with edited theme files.", "enum": [ "just", "obsidian", "linen", "tribune", "beacon", "aside", "changes", "custom" ], "type": "string" } }, "required": [ "blogId", "theme_id" ], "type": "object" }, "name": "switch_theme", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Update blog settings including name, subdomain, description, and logo. Requires owner or admin access.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" }, "description": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Updated blog description." }, "logo": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Updated logo URL." }, "name": { "description": "Updated blog name.", "maxLength": 100, "minLength": 1, "type": "string" }, "subdomain": { "description": "Updated blog subdomain.", "maxLength": 40, "minLength": 1, "pattern": "^(?!(?:api|admin|www|mail|app|dashboard|login|signup|blog|static|assets)$)(?!.*--)[a-z0-9]([a-z0-9-]*[a-z0-9])?$", "type": "string" } }, "required": [ "blogId", "name", "subdomain" ], "type": "object" }, "name": "update_blog", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" }, "domain": { "anyOf": [ { "maxLength": 100, "minLength": 1, "pattern": "^[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$", "type": "string" }, { "const": "", "type": "string" } ], "description": "Custom domain (e.g. blog.example.com) or root domain for subdirectory mode. Pass empty string to remove." }, "domain_slug": { "anyOf": [ { "maxLength": 50, "pattern": "^[a-zA-Z0-9-_]*$", "type": "string" }, { "type": "null" } ], "description": "Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog)." } }, "required": [ "blogId", "domain" ], "type": "object" }, "name": "update_blog_domain", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Merge custom metadata into a blog. Pass only the keys you want to add or update. Theme changes use the dedicated theme tools.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID.", "minLength": 1, "type": "string" }, "metadata": { "description": "Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings.", "items": { "additionalProperties": false, "properties": { "key": { "pattern": "^(?!(?:themeId|themeSettings|hasThemeFiles|themeUpdatedAt|customThemeBaseId)$).+$", "type": "string" }, "value": { "anyOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" }, { "type": "null" } ] } }, "required": [ "key", "value" ], "type": "object" }, "type": "array" } }, "required": [ "blogId", "metadata" ], "type": "object" }, "name": "update_blog_metadata", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Update an existing collection's name, slug, or description.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "collectionId": { "description": "Collection ID.", "minLength": 1, "type": "string" }, "description": { "description": "Updated collection description.", "maxLength": 256, "type": "string" }, "name": { "description": "Updated collection name.", "maxLength": 32, "minLength": 1, "type": "string" }, "slug": { "description": "Updated collection slug.", "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*$", "type": "string" } }, "required": [ "blogId", "collectionId" ], "type": "object" }, "name": "update_collection", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Update any editable field on an existing static page.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "body": { "description": "Updated HTML body.", "maxLength": 1000000, "minLength": 1, "type": "string" }, "image": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Updated featured image path or URL. Use upload_image for local files." }, "metadata": { "description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.", "items": { "additionalProperties": false, "properties": { "key": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": { "maxLength": 500, "minLength": 1, "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "maxItems": 20, "type": "array" }, "pageId": { "description": "Page ID.", "minLength": 1, "type": "string" }, "slug": { "description": "Updated page slug.", "maxLength": 100, "minLength": 1, "type": "string" }, "status": { "description": "Updated publishing status.", "enum": [ "draft", "published" ], "type": "string" }, "title": { "description": "Updated page title.", "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "blogId", "pageId" ], "type": "object" }, "name": "update_page", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Update any editable field on an existing blog post, including its author.", "inputSchema": { "additionalProperties": false, "properties": { "authorId": { "description": "Updated author user ID from list_blog_members. Reassignment requires owner or admin access.", "minLength": 1, "type": "string" }, "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "collection_id": { "description": "Updated collection ID.", "minLength": 1, "type": "string" }, "content": { "description": "Updated HTML content.", "maxLength": 1000000, "minLength": 1, "type": "string" }, "image": { "anyOf": [ { "maxLength": 500, "type": "string" }, { "type": "null" } ], "description": "Updated featured image path or URL. Use upload_image for local files." }, "metadata": { "description": "Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer.", "items": { "additionalProperties": false, "properties": { "key": { "maxLength": 50, "minLength": 1, "type": "string" }, "value": { "maxLength": 500, "minLength": 1, "type": "string" } }, "required": [ "key", "value" ], "type": "object" }, "maxItems": 20, "type": "array" }, "postId": { "description": "Post ID.", "minLength": 1, "type": "string" }, "published_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "description": "Updated publish datetime in ISO 8601 format." }, "slug": { "description": "Updated post slug.", "maxLength": 100, "minLength": 1, "type": "string" }, "status": { "description": "Updated publishing status.", "enum": [ "draft", "published" ], "type": "string" }, "tags": { "description": "Updated tag names.", "items": { "maxLength": 50, "minLength": 1, "type": "string" }, "maxItems": 10, "type": "array" }, "title": { "description": "Updated post title.", "maxLength": 200, "minLength": 1, "type": "string" } }, "required": [ "blogId", "postId" ], "type": "object" }, "name": "update_post", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "active": { "description": "Whether this redirect should be applied.", "type": "boolean" }, "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "destination": { "description": "Updated destination site path or absolute HTTP(S) URL.", "maxLength": 2048, "minLength": 1, "type": "string" }, "redirectId": { "description": "Redirect ID.", "minLength": 1, "type": "string" }, "source_path": { "description": "Updated incoming site path, starting with a single /.", "maxLength": 2048, "minLength": 1, "type": "string" }, "status_code": { "anyOf": [ { "const": 301, "type": "number" }, { "const": 302, "type": "number" } ], "description": "Updated HTTP redirect status code." } }, "required": [ "blogId", "redirectId" ], "type": "object" }, "name": "update_redirect", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Rename a blog tag.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "name": { "description": "New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods.", "maxLength": 50, "minLength": 1, "type": "string" }, "tagId": { "description": "Tag ID.", "minLength": 1, "type": "string" } }, "required": [ "blogId", "tagId", "name" ], "type": "object" }, "name": "update_tag", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Create or update a theme file. Requires a Pro subscription. Copies the built-in theme first if no custom files exist yet.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "content": { "description": "Full file content.", "type": "string" }, "file_path": { "description": "Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt.", "minLength": 1, "pattern": "^.+\\.(liquid|css|js|html|json|xml|txt)$", "type": "string" } }, "required": [ "blogId", "file_path", "content" ], "type": "object" }, "name": "update_theme_file", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Update one or more theme setting values for a blog. Unspecified values are preserved. Use get_theme_settings first to discover valid keys.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "values": { "description": "JSON object containing theme setting names and values from get_theme_settings.", "minLength": 2, "type": "string" } }, "required": [ "blogId", "values" ], "type": "object" }, "name": "update_theme_settings", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } }, { "description": "Upload an image to a blog. Use the returned path as the image value when creating or updating a post, page, or blog.", "inputSchema": { "additionalProperties": false, "properties": { "blogId": { "description": "Blog ID. Use list_blogs to discover available blog IDs.", "minLength": 1, "type": "string" }, "data": { "description": "Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB.", "maxLength": 11184812, "minLength": 1, "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$", "type": "string" }, "filename": { "description": "Original image filename, including its extension.", "maxLength": 255, "minLength": 1, "type": "string" }, "mimeType": { "description": "Image MIME type. SVG is supported only for logo uploads.", "enum": [ "image/png", "image/jpeg", "image/webp", "image/gif", "image/svg+xml" ], "type": "string" }, "uploadType": { "default": "post", "description": "Where the image will be used. Default: post.", "enum": [ "post", "page", "blog", "logo" ], "type": "string" } }, "required": [ "blogId", "filename", "mimeType", "data" ], "type": "object" }, "name": "upload_image", "outputSchema": { "additionalProperties": false, "properties": { "result": {} }, "required": [ "result" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:914a11215e72f11d22ac47217e94d4bebd2a833ba1d662a9a586708c1c780ad2 | sha256sum