AI control plane
Control mysaas.blog with AI
Public reading without an account, rich authenticated creation with OAuth, images, SEO, FR/EN translation and scoped publishing.
endpoint https://mysaas.blog/mcp
transport Streamable HTTP
public_tools 8
private_tools 27
rest_endpoints 23
Overview
The agent surface exposes the same public content a visitor can read, then adds an authenticated layer to create drafts, import images, tune SEO, propose FR/EN translations, publish or schedule. MCP Stable 2.0 uses only protocol 2026-07-28 over Streamable HTTP: server/discover, a per-request _meta envelope and direct tool-specific structuredContent.
Public read
Tools prefixed with public_ require no token. They only return published posts, public profiles, public comments, tags and categories visible on the site.
public_posts_list
List published posts visible to any visitor.
Public
none
public_post_get
Read one published post with content, SEO image, tags, sources and related SaaS.
Public
none
public_comments_list
List comments visible below a published post.
Public
none
public_profile_get
Read a builder profile exactly as a public visitor can see it.
Public
none
public_author_posts_list
List published posts for one public builder profile.
Public
none
public_tags_list
List tags used by published posts.
Public
none
public_categories_list
List public categories and published post counts.
Public
none
public_saas_posts_list
List public SaaS entries for a builder with the published posts that mention them.
Public
none
Authentication
Private actions use OAuth authorization code + PKCE or a personal agent key. In ChatGPT, the host starts OAuth and keeps the token; the user never pastes a bearer token into the conversation. Scopes separate reading, drafts, media, publishing, comments, SaaS and integrations. OpenAI reviewer access is created and revoked from Admin → Reviewers; Infisical remains reserved for server secrets.
MCP tools
profile_get
Fetch the current user's profile.
OAuth or agent key
profile:read
profile_update
Update the current user's public builder profile.
OAuth or agent key
profile:write
editorial_context_get
Fetch the current user's profile, editorial preferences and permitted article context.
OAuth or agent key
settings:read
editorial_preferences_update
Update private writing defaults without publishing content.
OAuth or agent key
settings:write
saas_list
List SaaS entries owned by the current user.
OAuth or agent key
saas:read
saas_create
Create a manual SaaS entry.
OAuth or agent key
saas:write
saas_update
Update one SaaS entry.
OAuth or agent key
saas:write
categories_list
List post categories.
OAuth or agent key
categories:read
tags_list
List available tags for the user.
OAuth or agent key
tags:read
comments_list
List comments authored by the user or left on the user's posts.
OAuth or agent key
comments:read
comment_create
Create a comment on a published post.
OAuth or agent key
comments:write
integrations_get
Read integration state.
OAuth or agent key
integrations:read
mrrcalendar_sync
Queue a sync for MRR Calendar.
OAuth or agent key
integrations:write
posts_list
List the current user's posts.
OAuth or agent key
posts:read
post_get
Fetch one owned post.
OAuth or agent key
posts:read
post_preflight
Validate a rich post payload.
OAuth or agent key
posts:write
post_translate
Propose a faithful FR/EN translation without saving it.
OAuth or agent key
posts:write
post_create_draft
Create a rich draft post.
OAuth or agent key
posts:write
post_update_draft
Patch an unpublished post; omitted translation SEO metadata is preserved and mediaId resolves to the canonical URL.
OAuth or agent key
posts:write
post_publish
Publish a post immediately.
OAuth or agent key
posts:publish
post_schedule
Schedule post publication.
OAuth or agent key
posts:publish
analytics_get
Read unique post views and daily audience data.
OAuth or agent key
posts:analytics:read
post_unpublish
Move a post back to draft.
OAuth or agent key
posts:publish
post_archive_draft
Archive an unpublished draft created by mistake.
OAuth or agent key
posts:delete
media_list
List active media assets.
OAuth or agent key
media:read
media_import_from_url
Import a public HTTPS image.
OAuth or agent key
media:write
media_import
Import ChatGPT file inputs into the media library.
OAuth or agent key
media:write
ChatGPT facade
The dedicated /mcp/chatgpt facade exposes 27 tools for profile, editorial preferences, SaaS, category, tag, source, comment and integration coverage as well as writing, review, translation, media import and post lifecycle control. It exposes five importable skills (manage-posts, manage-saas, manage-profile-and-editorial-preferences, manage-community-and-integrations and analytics) covering the seven historical workflows through the MCP skills extension. The workflow accepts fr, en or both in one draft: post_translate prepares a non-persistent proposal, then media, structured sources, tags, categories and SaaS relations are validated before saving and explicit publication. Structured sources are not duplicated as a body bibliography; contextual source citations and SaaS mentions use tracked bindings.
endpoint
https://mysaas.blog/mcp/chatgpt
oauth resource
https://mysaas.blog/.well-known/oauth-protected-resource/mcp/chatgpt
skills
io.modelcontextprotocol/skills
locales
fr, en
REST API
The full REST contract is machine-readable: every endpoint documents parameters, JSON or multipart bodies, responses, errors and scopes. publication modes now and schedule require posts:publish in addition to posts:write.
/api/v1/posts
List authenticated user's posts.
OAuth or agent key
posts:read
/api/v1/posts
Create a rich draft post. publication.mode now or schedule additionally requires posts:publish.
OAuth or agent key
posts:write
/api/v1/posts/preflight
Validate a rich post payload before saving or publishing.
OAuth or agent key
posts:write
/api/v1/posts/{id}
Fetch one owned post. Draft and scheduled posts additionally require posts:drafts:read.
OAuth or agent key
posts:read
/api/v1/posts/{id}
Update a rich draft post. Updating live or scheduled posts additionally requires posts:publish.
OAuth or agent key
posts:write
/api/v1/posts/{id}
Archive an unpublished draft. Published and scheduled posts are refused.
OAuth or agent key
posts:delete
/api/v1/posts/{id}/publish
Publish a post immediately after preflight.
OAuth or agent key
posts:publish
/api/v1/posts/{id}/schedule
Schedule a post publication date.
OAuth or agent key
posts:publish
/api/v1/posts/{id}/unpublish
Move a public or scheduled post back to draft.
OAuth or agent key
posts:publish
/api/v1/media
List active media assets for the authenticated user.
OAuth or agent key
media:read
/api/v1/media
Upload an image file to the media library.
OAuth or agent key
media:write
/api/v1/media/import
Import a public HTTPS image.
OAuth or agent key
media:write
/api/v1/profile
Read authenticated profile.
OAuth or agent key
profile:read
/api/v1/profile
Update public profile fields.
OAuth or agent key
profile:write
/api/v1/saas
List authenticated user's SaaS entries.
OAuth or agent key
saas:read
/api/v1/saas
Create a manual SaaS entry.
OAuth or agent key
saas:write
/api/v1/saas/{id}
Update one SaaS entry.
OAuth or agent key
saas:write
/api/v1/categories
List post categories.
OAuth or agent key
categories:read
/api/v1/tags
List available tags.
OAuth or agent key
tags:read
/api/v1/comments
List comments owned by or addressed to the authenticated user.
OAuth or agent key
comments:read
/api/v1/comments
Create a comment on a published post.
OAuth or agent key
comments:write
/api/v1/integrations
Read connected integration state.
OAuth or agent key
integrations:read
/api/v1/integrations/mrrcalendar/sync
Queue a sync for MRR Calendar.
OAuth or agent key
integrations:write
Rich post
An agentic post is not raw Markdown. It contains translations, sanitized editor HTML, an SEO image, sources, tags, category, linked SaaS and a publication mode.
{
"translations": [{
"locale": "fr",
"title": "Build log",
"excerpt": "Résumé SEO",
"contentHtml": "<h2>...</h2>",
"seoImage": { "mode": "manual", "mediaId": "cm..." }
}],
"tags": ["pricing", "seo"],
"sources": [{ "url": "https://example.com", "label": "Source" }],
"relatedSaasIds": ["cm..."],
"publication": { "mode": "draft" }
}Responses and retries
REST uses the ok/data/meta envelope and clients read resources from data. MCP exposes the direct structuredContent declared by outputSchema; it is not wrapped in the REST contract. The MCP endpoint serves 2026-07-28 only and has no 2025 fallback.
REST
{
"ok": true,
"data": { "post": { "id": "cm..." } },
"meta": { "scopes": ["posts:read", "posts:write"] }
}
MCP tools/call
{
"result": {
"structuredContent": {
"ok": true,
"post": { "id": "cm..." },
"meta": { "idempotency": { "key": "draft-2026-08-01-a", "replayed": false } }
}
}
}Drafts
Drafts are listed with status=draft or status=all, or includeDrafts=true. These views require posts:drafts:read. A mistaken draft can be archived with posts:delete.
GET /api/v1/posts?status=draft
GET /api/v1/posts?status=all
DELETE /api/v1/posts/{id}Media flow
Import or upload an image, read media.id, then reference mediaId in seoImage or data-media-id inside editor HTML. The server resolves the canonical media URL and preserves omitted SEO metadata in a translation patch.
POST /api/v1/media/import
{ "url": "https://example.com/hero.png" }
{
"translations": [{
"seoImage": { "mode": "manual", "mediaId": "cm_media_123" },
"contentHtml": "<img src=\"https://...\" data-media-id=\"cm_media_123\" alt=\"...\" />"
}]
}Permissions
Public content can be read without a key. Write actions require OAuth or an agent key with the matching scopes. Deletion uses posts:delete, disabled by default when a key is created; it archives the post, removes it from public surfaces and releases its slugs.