{"name":"MySaaS Blog AI control plane","version":"0.5.0","baseUrl":"https://mysaas.blog","mcp":{"serverVersion":"1.0.4","endpoint":"https://mysaas.blog/mcp","chatgptEndpoint":"https://mysaas.blog/mcp/chatgpt","protocolVersion":"2026-07-28","supportedProtocolVersions":["2026-07-28"],"transport":"Streamable HTTP","responseMode":"auto","legacyFallback":false,"acceptedMethods":["POST","OPTIONS"],"requestContentType":"application/json","maxRequestBodyBytes":262144,"catalogCache":{"ttlMs":300000,"scope":"public"},"outputContract":"tool-specific structuredContent","chatgpt":{"catalog":"editorial","transport":"Streamable HTTP","protocolVersion":"2026-07-28","protectedResource":"https://mysaas.blog/.well-known/oauth-protected-resource/mcp/chatgpt","skillsExtension":"io.modelcontextprotocol/skills","locales":["fr","en"]}},"auth":{"publicReadTools":true,"oauthAuthorizationServer":"https://mysaas.blog/.well-known/oauth-authorization-server","protectedResource":"https://mysaas.blog/.well-known/oauth-protected-resource/mcp","agentKeysDashboard":"https://mysaas.blog/dashboard/settings/agents","scopes":["profile:read","profile:write","saas:read","saas:write","posts:read","posts:drafts:read","posts:write","posts:publish","posts:delete","posts:analytics:read","media:read","media:write","tags:read","tags:write","categories:read","comments:read","comments:write","settings:read","settings:write","integrations:read","integrations:write"]},"capabilities":[{"name":"public_posts_list","kind":"mcp_tool","title":"List public posts","description":"List published posts visible to any visitor.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_post_get","kind":"mcp_tool","title":"Get public post","description":"Read one published post with content, SEO image, tags, sources and related SaaS.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_comments_list","kind":"mcp_tool","title":"List public comments","description":"List comments visible below a published post.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_profile_get","kind":"mcp_tool","title":"Get public profile","description":"Read a builder profile exactly as a public visitor can see it.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_author_posts_list","kind":"mcp_tool","title":"List public author posts","description":"List published posts for one public builder profile.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_tags_list","kind":"mcp_tool","title":"List public tags","description":"List tags used by published posts.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_categories_list","kind":"mcp_tool","title":"List public categories","description":"List public categories and published post counts.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"public_saas_posts_list","kind":"mcp_tool","title":"List public SaaS posts","description":"List public SaaS entries for a builder with the published posts that mention them.","auth":"public","scope":null,"readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"profile_get","kind":"mcp_tool","title":"Get authenticated profile","description":"Fetch the current user's profile.","auth":"oauth_or_agent_key","scope":"profile:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"profile_update","kind":"mcp_tool","title":"Update profile","description":"Update the current user's public builder profile.","auth":"oauth_or_agent_key","scope":"profile:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"editorial_context_get","kind":"mcp_tool","title":"Get editorial context","description":"Fetch the current user's profile, editorial preferences and permitted article context.","auth":"oauth_or_agent_key","scope":"settings:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"editorial_preferences_update","kind":"mcp_tool","title":"Update editorial preferences","description":"Update private writing defaults without publishing content.","auth":"oauth_or_agent_key","scope":"settings:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"saas_list","kind":"mcp_tool","title":"List SaaS","description":"List SaaS entries owned by the current user.","auth":"oauth_or_agent_key","scope":"saas:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"saas_create","kind":"mcp_tool","title":"Create SaaS","description":"Create a manual SaaS entry.","auth":"oauth_or_agent_key","scope":"saas:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"saas_update","kind":"mcp_tool","title":"Update SaaS","description":"Update one SaaS entry.","auth":"oauth_or_agent_key","scope":"saas:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"categories_list","kind":"mcp_tool","title":"List categories","description":"List post categories.","auth":"oauth_or_agent_key","scope":"categories:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"tags_list","kind":"mcp_tool","title":"List tags","description":"List available tags for the user.","auth":"oauth_or_agent_key","scope":"tags:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"comments_list","kind":"mcp_tool","title":"List comments","description":"List comments authored by the user or left on the user's posts.","auth":"oauth_or_agent_key","scope":"comments:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"comment_create","kind":"mcp_tool","title":"Create comment","description":"Create a comment on a published post.","auth":"oauth_or_agent_key","scope":"comments:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"integrations_get","kind":"mcp_tool","title":"Get integrations","description":"Read integration state.","auth":"oauth_or_agent_key","scope":"integrations:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"mrrcalendar_sync","kind":"mcp_tool","title":"Sync MRR Calendar","description":"Queue a sync for MRR Calendar.","auth":"oauth_or_agent_key","scope":"integrations:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"posts_list","kind":"mcp_tool","title":"List posts","description":"List the current user's posts.","auth":"oauth_or_agent_key","scope":"posts:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"post_get","kind":"mcp_tool","title":"Get post","description":"Fetch one owned post.","auth":"oauth_or_agent_key","scope":"posts:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"post_preflight","kind":"mcp_tool","title":"Preflight post","description":"Validate a rich post payload.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"post_translate","kind":"mcp_tool","title":"Propose translation","description":"Propose a faithful FR/EN translation without saving it.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"post_create_draft","kind":"mcp_tool","title":"Create draft","description":"Create a rich draft post.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"post_update_draft","kind":"mcp_tool","title":"Update draft","description":"Patch an unpublished post; omitted translation SEO metadata is preserved and mediaId resolves to the canonical URL.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":false,"destructive":true},{"name":"post_update","kind":"mcp_tool","title":"Update post","description":"Patch all editorial fields of an owned post with expectedUpdatedAt: translations/slugs, relations, category, tags, access and publication. Omitted fields are preserved; live/scheduled edits and publication require posts:publish.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":true,"destructive":true},{"name":"post_publish","kind":"mcp_tool","title":"Publish post","description":"Publish a post immediately.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"post_schedule","kind":"mcp_tool","title":"Schedule post","description":"Schedule post publication.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"analytics_get","kind":"mcp_tool","title":"Get analytics","description":"Read unique post views and daily audience data.","auth":"oauth_or_agent_key","scope":"posts:analytics:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"post_unpublish","kind":"mcp_tool","title":"Unpublish post","description":"Move a post back to draft.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"post_archive_draft","kind":"mcp_tool","title":"Archive draft","description":"Archive an unpublished draft created by mistake.","auth":"oauth_or_agent_key","scope":"posts:delete","readOnly":true,"writesPublicWeb":false,"destructive":true},{"name":"media_list","kind":"mcp_tool","title":"List media","description":"List active media assets.","auth":"oauth_or_agent_key","scope":"media:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"media_import_from_url","kind":"mcp_tool","title":"Import media","description":"Import a public HTTPS image.","auth":"oauth_or_agent_key","scope":"media:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"media_import","kind":"mcp_tool","title":"Import uploaded images","description":"Import ChatGPT file inputs into the media library.","auth":"oauth_or_agent_key","scope":"media:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"GET /api/v1/posts","kind":"rest_endpoint","method":"GET","path":"/api/v1/posts","title":"List owned posts","description":"List authenticated user's posts.","auth":"oauth_or_agent_key","scope":"posts:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/posts","kind":"rest_endpoint","method":"POST","path":"/api/v1/posts","title":"Create rich post","description":"Create a rich draft post. publication.mode now or schedule additionally requires posts:publish.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/posts/preflight","kind":"rest_endpoint","method":"POST","path":"/api/v1/posts/preflight","title":"Preflight rich post","description":"Validate a rich post payload before saving or publishing.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"GET /api/v1/posts/{id}","kind":"rest_endpoint","method":"GET","path":"/api/v1/posts/{id}","title":"Get owned post","description":"Fetch one owned post. Draft and scheduled posts additionally require posts:drafts:read.","auth":"oauth_or_agent_key","scope":"posts:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"PATCH /api/v1/posts/{id}","kind":"rest_endpoint","method":"PATCH","path":"/api/v1/posts/{id}","title":"Update rich post","description":"Update a rich draft post. Updating live or scheduled posts additionally requires posts:publish.","auth":"oauth_or_agent_key","scope":"posts:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"DELETE /api/v1/posts/{id}","kind":"rest_endpoint","method":"DELETE","path":"/api/v1/posts/{id}","title":"Archive draft","description":"Archive an unpublished draft. Published and scheduled posts are refused.","auth":"oauth_or_agent_key","scope":"posts:delete","readOnly":false,"writesPublicWeb":false,"destructive":true},{"name":"POST /api/v1/posts/{id}/publish","kind":"rest_endpoint","method":"POST","path":"/api/v1/posts/{id}/publish","title":"Publish post","description":"Publish a post immediately after preflight.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"POST /api/v1/posts/{id}/schedule","kind":"rest_endpoint","method":"POST","path":"/api/v1/posts/{id}/schedule","title":"Schedule post","description":"Schedule a post publication date.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"POST /api/v1/posts/{id}/unpublish","kind":"rest_endpoint","method":"POST","path":"/api/v1/posts/{id}/unpublish","title":"Unpublish post","description":"Move a public or scheduled post back to draft.","auth":"oauth_or_agent_key","scope":"posts:publish","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"GET /api/v1/media","kind":"rest_endpoint","method":"GET","path":"/api/v1/media","title":"List media","description":"List active media assets for the authenticated user.","auth":"oauth_or_agent_key","scope":"media:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/media","kind":"rest_endpoint","method":"POST","path":"/api/v1/media","title":"Upload media","description":"Upload an image file to the media library.","auth":"oauth_or_agent_key","scope":"media:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/media/import","kind":"rest_endpoint","method":"POST","path":"/api/v1/media/import","title":"Import media","description":"Import a public HTTPS image.","auth":"oauth_or_agent_key","scope":"media:write","readOnly":false,"writesPublicWeb":false,"destructive":false},{"name":"GET /api/v1/profile","kind":"rest_endpoint","method":"GET","path":"/api/v1/profile","title":"Get profile","description":"Read authenticated profile.","auth":"oauth_or_agent_key","scope":"profile:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"PATCH /api/v1/profile","kind":"rest_endpoint","method":"PATCH","path":"/api/v1/profile","title":"Update profile","description":"Update public profile fields.","auth":"oauth_or_agent_key","scope":"profile:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"GET /api/v1/saas","kind":"rest_endpoint","method":"GET","path":"/api/v1/saas","title":"List SaaS","description":"List authenticated user's SaaS entries.","auth":"oauth_or_agent_key","scope":"saas:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/saas","kind":"rest_endpoint","method":"POST","path":"/api/v1/saas","title":"Create SaaS","description":"Create a manual SaaS entry.","auth":"oauth_or_agent_key","scope":"saas:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"PATCH /api/v1/saas/{id}","kind":"rest_endpoint","method":"PATCH","path":"/api/v1/saas/{id}","title":"Update SaaS","description":"Update one SaaS entry.","auth":"oauth_or_agent_key","scope":"saas:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"GET /api/v1/categories","kind":"rest_endpoint","method":"GET","path":"/api/v1/categories","title":"List categories","description":"List post categories.","auth":"oauth_or_agent_key","scope":"categories:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"GET /api/v1/tags","kind":"rest_endpoint","method":"GET","path":"/api/v1/tags","title":"List tags","description":"List available tags.","auth":"oauth_or_agent_key","scope":"tags:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"GET /api/v1/comments","kind":"rest_endpoint","method":"GET","path":"/api/v1/comments","title":"List comments","description":"List comments owned by or addressed to the authenticated user.","auth":"oauth_or_agent_key","scope":"comments:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/comments","kind":"rest_endpoint","method":"POST","path":"/api/v1/comments","title":"Create comment","description":"Create a comment on a published post.","auth":"oauth_or_agent_key","scope":"comments:write","readOnly":false,"writesPublicWeb":true,"destructive":false},{"name":"GET /api/v1/integrations","kind":"rest_endpoint","method":"GET","path":"/api/v1/integrations","title":"Get integrations","description":"Read connected integration state.","auth":"oauth_or_agent_key","scope":"integrations:read","readOnly":true,"writesPublicWeb":false,"destructive":false},{"name":"POST /api/v1/integrations/mrrcalendar/sync","kind":"rest_endpoint","method":"POST","path":"/api/v1/integrations/mrrcalendar/sync","title":"Sync MRR Calendar","description":"Queue a sync for MRR Calendar.","auth":"oauth_or_agent_key","scope":"integrations:write","readOnly":false,"writesPublicWeb":false,"destructive":false}]}