{"name":"io.github.usamaejaz/justblogged","slug":"usamaejaz-justblogged","title":"JustBlogged","description":"Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.","url":"https://mcp.market/server/usamaejaz-justblogged","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":7,"ok":7,"last_checked_at":"2026-09-21T06:05:37.209Z","last_ok_at":"2026-09-21T06:05:37.209Z","latency_ms":351},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/usamaejaz/justblogged","website":"https://justblogged.com","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://justblogged.com/mcp"}],"packages":[],"tools":[{"name":"create_blog","description":"Create a new blog. Subdomain is auto-generated from the name. Requires account-level OAuth or a user-scoped API key.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Blog name."},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Optional blog description."},"logo":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Optional logo URL."}},"required":["name"],"additionalProperties":false}},{"name":"create_collection","description":"Create a new collection with name, slug, and optional description.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"name":{"type":"string","minLength":1,"maxLength":32,"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."},"description":{"type":"string","maxLength":256,"description":"Optional collection description."}},"required":["blogId","name","slug"],"additionalProperties":false}},{"name":"create_page","description":"Create a new static page with title, HTML body, metadata, slug, image, and status.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Page title."},"slug":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Page slug. Auto-generated from title when omitted."},"body":{"type":"string","minLength":1,"maxLength":1000000,"description":"Page HTML body."},"status":{"type":"string","enum":["draft","published"],"default":"draft","description":"Publishing status. Default: draft."},"image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Optional featured image path or URL. Use upload_image for local files."},"metadata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["key","value"],"additionalProperties":false},"maxItems":20,"description":"Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."}},"required":["blogId","title","body"],"additionalProperties":false}},{"name":"create_post","description":"Create a new blog post with title, HTML content, author, collection, tags, metadata, slug, image, and publishing options.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Post title."},"slug":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Post slug. Auto-generated from title when omitted."},"content":{"type":"string","minLength":1,"maxLength":1000000,"description":"Post HTML content."},"status":{"type":"string","enum":["draft","published"],"default":"draft","description":"Publishing status. Default: draft."},"collection_id":{"type":"string","minLength":1,"description":"Collection ID for the post."},"authorId":{"type":"string","minLength":1,"description":"Optional author user ID from list_blog_members. Assigning another member requires owner or admin access."},"image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Optional featured image path or URL. Use upload_image for local files."},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Optional publish datetime in ISO 8601 format."},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50},"maxItems":10,"default":[],"description":"Tag names. Maximum 10 tags."},"metadata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["key","value"],"additionalProperties":false},"maxItems":20,"description":"Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."}},"required":["blogId","title","content","collection_id"],"additionalProperties":false}},{"name":"create_redirect","description":"Create a redirect for a blog. Requires owner or admin access through account-level OAuth or a user-scoped API key.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"source_path":{"type":"string","minLength":1,"maxLength":2048,"description":"Incoming site path to redirect, starting with a single /. Query strings and fragments are not allowed."},"destination":{"type":"string","minLength":1,"maxLength":2048,"description":"Destination site path or absolute HTTP(S) URL."},"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."},"active":{"type":"boolean","default":true,"description":"Whether this redirect should be applied."}},"required":["blogId","source_path","destination"],"additionalProperties":false}},{"name":"decide_content_review","description":"Approve a pending content review or request changes. Approving a staged update to published content applies that revision.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"reviewId":{"type":"string","minLength":1,"description":"Review ID from list_content_reviews."},"decision":{"type":"string","enum":["approved","changes_requested"],"description":"Review decision."},"comment":{"type":"string","maxLength":2000,"description":"Review comment. Required when requesting changes; maximum 2,000 characters."}},"required":["blogId","reviewId","decision"],"additionalProperties":false}},{"name":"delete_blog","description":"Delete a blog by ID. Only the blog owner can delete. Active subscriptions are cancelled automatically.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."}},"required":["blogId"],"additionalProperties":false}},{"name":"delete_collection","description":"Delete a collection by ID and optionally reassign its posts to another collection.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"reassign_to":{"type":"string","minLength":1,"description":"Optional collection ID that should receive the deleted collection's posts."}},"required":["blogId","collectionId"],"additionalProperties":false}},{"name":"delete_page","description":"Delete a static page by ID.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","pageId"],"additionalProperties":false}},{"name":"delete_post","description":"Delete a blog post by ID.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","postId"],"additionalProperties":false}},{"name":"delete_redirect","description":"Delete a redirect by ID. Requires owner or admin access through account-level OAuth or a user-scoped API key.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","redirectId"],"additionalProperties":false}},{"name":"delete_tag","description":"Delete a blog tag by ID.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"tagId":{"type":"string","minLength":1,"description":"Tag ID."}},"required":["blogId","tagId"],"additionalProperties":false}},{"name":"delete_theme_file","description":"Delete a custom theme file from a blog. Requires a Pro subscription. Cannot delete built-in-only files.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","file_path"],"additionalProperties":false}},{"name":"get_blog","description":"Get a single blog by ID, including settings like subdomain, domain, logo, and metadata.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."}},"required":["blogId"],"additionalProperties":false}},{"name":"get_blog_metadata","description":"Get custom metadata for a blog (SEO fields, themeId, etc.). Does not include themeSettings values.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."}},"required":["blogId"],"additionalProperties":false}},{"name":"get_content_revision","description":"Get one saved post or page revision, including its complete content snapshot.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"contentType":{"type":"string","enum":["post","page"],"description":"Content type."},"contentId":{"type":"string","minLength":1,"description":"Post or page ID."},"revisionId":{"type":"string","minLength":1,"description":"Revision ID from list_content_revisions."}},"required":["blogId","contentType","contentId","revisionId"],"additionalProperties":false}},{"name":"get_latest_content_review","description":"Get the latest review associated with the newest saved revision of a post or page.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"contentType":{"type":"string","enum":["post","page"],"description":"Content type."},"contentId":{"type":"string","minLength":1,"description":"Post or page ID."}},"required":["blogId","contentType","contentId"],"additionalProperties":false}},{"name":"get_page","description":"Get a single static page by ID.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","pageId"],"additionalProperties":false}},{"name":"get_post","description":"Get a single blog post by ID.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","postId"],"additionalProperties":false}},{"name":"get_theme_file","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"file_path":{"type":"string","minLength":1,"pattern":"^.+\\.(liquid|css|js|html|json|xml|txt)$","description":"Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."}},"required":["blogId","file_path"],"additionalProperties":false}},{"name":"get_theme_settings","description":"Get theme settings schema and current values for a blog's active theme.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_available_themes","description":"List built-in themes available for a blog and show which theme is currently active.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_blog_members","description":"List blog members who can be assigned as post authors. Use a member id as authorId in create_post or update_post.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_blogs","description":"List the authenticated user's accessible blogs so later tool calls can target the right blogId.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"list_collections","description":"List all collections for a blog.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_content_reviews","description":"List content review requests for a blog, filtered by status.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"status":{"type":"string","enum":["pending","approved","changes_requested","superseded"],"default":"pending","description":"Review status. Default: pending."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_content_revisions","description":"List the saved revision history for a post or page. Returns revision metadata without full snapshots.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"contentType":{"type":"string","enum":["post","page"],"description":"Content type."},"contentId":{"type":"string","minLength":1,"description":"Post or page ID."}},"required":["blogId","contentType","contentId"],"additionalProperties":false}},{"name":"list_pages","description":"List static pages with pagination, filtering, and sorting.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"page":{"type":"integer","minimum":1,"default":1,"description":"Page number. Default: 1."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":30,"description":"Page size. Default: 30, maximum: 100."},"status":{"type":"string","enum":["draft","published"],"description":"Filter by page status."},"orderBy":{"type":"string","enum":["createdAt","updatedAt","title"],"default":"updatedAt","description":"Sort field. Default: updatedAt."},"order":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction. Default: desc."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_posts","description":"List blog posts with pagination, filtering, and sorting by status, collection, tag, author, or date.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"page":{"type":"integer","minimum":1,"default":1,"description":"Page number. Default: 1."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":30,"description":"Page size. Default: 30, maximum: 100."},"status":{"type":"string","enum":["draft","published","scheduled","all"],"description":"Filter by post status."},"collectionId":{"type":"string","minLength":1,"description":"Filter by collection ID."},"tagId":{"type":"string","minLength":1,"description":"Filter by tag ID."},"userId":{"type":"string","minLength":1,"description":"Filter by author user ID."},"orderBy":{"type":"string","enum":["createdAt","updatedAt","title","publishedAt"],"default":"createdAt","description":"Sort field. Default: createdAt."},"order":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction. Default: desc."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_redirects","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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"search":{"type":"string","maxLength":200,"default":"","description":"Search source paths and destinations."},"status":{"type":"string","enum":["all","active","inactive"],"default":"all","description":"Filter by active state."},"type":{"type":"string","enum":["all","301","302"],"default":"all","description":"Filter by HTTP status code."},"page":{"type":"integer","minimum":1,"default":1,"description":"Page number, starting at 1."},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Redirects per page, from 1 to 100."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_tags","description":"List blog tags with optional case-insensitive search filtering.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId"],"additionalProperties":false}},{"name":"list_theme_files","description":"List the theme file tree for a blog (layouts, templates, assets, etc.).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."}},"required":["blogId"],"additionalProperties":false}},{"name":"submit_content_review","description":"Submit the latest saved revision of a draft post or page for review.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"contentType":{"type":"string","enum":["post","page"],"description":"Content type."},"contentId":{"type":"string","minLength":1,"description":"Post or page ID."},"comment":{"type":"string","maxLength":2000,"description":"Optional review comment. Maximum 2,000 characters."}},"required":["blogId","contentType","contentId"],"additionalProperties":false}},{"name":"switch_theme","description":"Switch a blog to a different built-in theme or to custom if theme files exist.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"theme_id":{"type":"string","enum":["just","obsidian","linen","tribune","beacon","aside","changes","custom"],"description":"Theme ID. Use custom for blogs with edited theme files."}},"required":["blogId","theme_id"],"additionalProperties":false}},{"name":"update_blog","description":"Update blog settings including name, subdomain, description, and logo. Requires owner or admin access.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated blog name."},"subdomain":{"type":"string","minLength":1,"maxLength":40,"pattern":"^(?!(?:api|admin|www|mail|app|dashboard|login|signup|blog|static|assets)$)(?!.*--)[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Updated blog subdomain."},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Updated blog description."},"logo":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Updated logo URL."}},"required":["blogId","name","subdomain"],"additionalProperties":false}},{"name":"update_blog_domain","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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."},"domain":{"anyOf":[{"type":"string","minLength":1,"pattern":"^[a-zA-Z0-9-]+(\\.[a-zA-Z]{2,})+$","maxLength":100},{"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","maxLength":50,"pattern":"^[a-zA-Z0-9-_]*$"},{"type":"null"}],"description":"Optional subdirectory slug for subdirectory hosting (e.g. example.com + blog)."}},"required":["blogId","domain"],"additionalProperties":false}},{"name":"update_blog_metadata","description":"Merge custom metadata into a blog. Pass only the keys you want to add or update. Theme changes use the dedicated theme tools.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID."},"metadata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","pattern":"^(?!(?:themeId|themeSettings|hasThemeFiles|themeUpdatedAt|customThemeBaseId)$).+$"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["key","value"],"additionalProperties":false},"description":"Custom blog metadata entries as key/value objects. Theme changes must use switch_theme or update_theme_settings."}},"required":["blogId","metadata"],"additionalProperties":false}},{"name":"update_collection","description":"Update an existing collection's name, slug, or description.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"name":{"type":"string","minLength":1,"maxLength":32,"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."},"description":{"type":"string","maxLength":256,"description":"Updated collection description."}},"required":["blogId","collectionId"],"additionalProperties":false}},{"name":"update_page","description":"Update any editable field on an existing static page.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Updated page title."},"slug":{"type":"string","maxLength":100,"minLength":1,"description":"Updated page slug."},"body":{"type":"string","minLength":1,"maxLength":1000000,"description":"Updated HTML body."},"status":{"type":"string","enum":["draft","published"],"description":"Updated publishing status."},"image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Updated featured image path or URL. Use upload_image for local files."},"metadata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["key","value"],"additionalProperties":false},"maxItems":20,"description":"Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."}},"required":["blogId","pageId"],"additionalProperties":false}},{"name":"update_post","description":"Update any editable field on an existing blog post, including its author.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"title":{"type":"string","minLength":1,"maxLength":200,"description":"Updated post title."},"slug":{"type":"string","maxLength":100,"minLength":1,"description":"Updated post slug."},"content":{"type":"string","minLength":1,"maxLength":1000000,"description":"Updated HTML content."},"status":{"type":"string","enum":["draft","published"],"description":"Updated publishing status."},"collection_id":{"type":"string","minLength":1,"description":"Updated collection ID."},"authorId":{"type":"string","minLength":1,"description":"Updated author user ID from list_blog_members. Reassignment requires owner or admin access."},"image":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"description":"Updated featured image path or URL. Use upload_image for local files."},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Updated publish datetime in ISO 8601 format."},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":50},"maxItems":10,"description":"Updated tag names."},"metadata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":50},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["key","value"],"additionalProperties":false},"maxItems":20,"description":"Custom metadata entries as key/value objects. Maximum 20 entries; description should be 200 characters or fewer."}},"required":["blogId","postId"],"additionalProperties":false}},{"name":"update_redirect","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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"source_path":{"type":"string","minLength":1,"maxLength":2048,"description":"Updated incoming site path, starting with a single /."},"destination":{"type":"string","minLength":1,"maxLength":2048,"description":"Updated destination site path or absolute HTTP(S) URL."},"status_code":{"anyOf":[{"type":"number","const":301},{"type":"number","const":302}],"description":"Updated HTTP redirect status code."},"active":{"type":"boolean","description":"Whether this redirect should be applied."}},"required":["blogId","redirectId"],"additionalProperties":false}},{"name":"update_tag","description":"Rename a blog tag.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"tagId":{"type":"string","minLength":1,"description":"Tag ID."},"name":{"type":"string","minLength":1,"maxLength":50,"description":"New tag name. Allowed characters: letters, numbers, spaces, hyphens, underscores, periods."}},"required":["blogId","tagId","name"],"additionalProperties":false}},{"name":"update_theme_file","description":"Create or update a theme file. Requires a Pro subscription. Copies the built-in theme first if no custom files exist yet.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"file_path":{"type":"string","minLength":1,"pattern":"^.+\\.(liquid|css|js|html|json|xml|txt)$","description":"Text theme file path ending in .liquid, .css, .js, .html, .json, .xml, or .txt."},"content":{"type":"string","description":"Full file content."}},"required":["blogId","file_path","content"],"additionalProperties":false}},{"name":"update_theme_settings","description":"Update one or more theme setting values for a blog. Unspecified values are preserved. Use get_theme_settings first to discover valid keys.","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["blogId","values"],"additionalProperties":false}},{"name":"upload_image","description":"Upload an image to a blog. Use the returned path as the image value when creating or updating a post, page, or blog.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"blogId":{"type":"string","minLength":1,"description":"Blog ID. Use list_blogs to discover available blog IDs."},"filename":{"type":"string","minLength":1,"maxLength":255,"description":"Original image filename, including its extension."},"mimeType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","image/svg+xml"],"description":"Image MIME type. SVG is supported only for logo uploads."},"data":{"type":"string","minLength":1,"maxLength":11184812,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$","description":"Base64-encoded image bytes without a data URL prefix. Maximum decoded size: 8 MB."},"uploadType":{"type":"string","enum":["post","page","blog","logo"],"default":"post","description":"Where the image will be used. Default: post."}},"required":["blogId","filename","mimeType","data"],"additionalProperties":false}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-21T05:11:30.279Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:11:30.310Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1068ms"]},"poisoning":{"score":15,"max":15,"notes":["45 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 25 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://justblogged.com/mcp","reachable":true,"authRequired":false,"latencyMs":1068,"serverInfo":{"name":"justblogged-mcp","version":"0.1.0"}}],"packages":[],"repo":{"found":false,"owner":"usamaejaz","repo":"justblogged","error":"repo not found"},"icon":{"url":"https://justblogged.com/favicon.ico","source":"site","width":48,"height":48},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}