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.

mcp · 2026-07-28

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.

EndpointAuthScope

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

EndpointAuthScope

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.

EndpointAuthScope

/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.