SimpleNewsletter365

Automation

Automate with AI through MCP

Last updated August 5, 2026

SimpleNewsletter365 exposes a user-authorized MCP (Model Context Protocol) server. Codex can use it to work with your newsletters through the same account membership and permission checks as the web app.

What it does

The bundles currently available for client grants are:

  • Newsletter drafting: list, create, update, validate, preview, render full desktop and mobile screenshots in light and dark mode, capture high-resolution website screenshot blocks, import managed images from uploads or OneDrive, and test draft newsletters.
  • Reporting: read bounded delivery, engagement, recipient, and short-link reports.
  • Send operations: review readiness, choose a mailbox, request and confirm sends, and control sends in progress.
  • Audience management: manage contacts, segments, forms, subscriptions, and Microsoft 365 imports.
  • Organization administration: manage organization settings, team members, domains, short links, plans, billing handoffs, and MCP policy.

Discover the current authoring contract

Before it writes newsletter content, an agent should call newsletter_get_capabilities to read the live schema and renderer versions, supported block types, verified behavior, limits, and deferred capabilities. It should then call newsletter_get_block_schema for the accepted fields, validator-derived JSON Schema Draft 2020-12, exact defaults, examples, ranges, enums, responsive behavior, dark-mode behavior, and client notes. The current contract is schema 2.0.0 with 21 block types, including Feature List, Card, Stat Row, Eyebrow, List, Quote, Comparison Table, and Labeled Divider. Version 1 drafts remain readable during migration. The discovery responses are authoritative when a static example or older conversation disagrees with them.

The published block identifiers are: heading, paragraph, image, screenshot, button, divider, spacer, footer, columns, section, gallery, social, share, featureList, card, statRow, eyebrow, list, quote, comparisonTable, and labeledDivider. Agents should still read the live schema instead of inferring fields from this list.

Agents can validate a full document without saving by passing dryRun: true to newsletter_set_content. They can make a narrow, concurrency-safe edit with newsletter_patch_content and the draft’s updatedAt revision. They should run newsletter_lint to receive structured findings for desktop and mobile in light and dark mode before hand-off. Lint uses the emitted renderer HTML to detect breakpoint collisions, mobile layout rules leaking into desktop modes, missing forced-dark output, and saved presentation properties that have no effect on markup. It also checks that injected system branding keeps its action on one line and expands to the available width on mobile. newsletter_get_capabilities reports renderer version 4 for this contract.

newsletter_render_preview can return the exact emitted HTML or authoritative PNG artifacts for selected light or dark modes and at most four distinct viewport widths from 320 through 1600 pixels. Each PNG has an opaque artifact id and an account-authorized, no-store URL that expires after one hour. Provider capture URLs are never exposed. The standard mobile preview is 375 pixels. Use 320 as the stress case and 390 as a second representative device width.

Theme authoring is discoverable too. newsletter_get_theme_schema publishes the complete theme contract. newsletter_list_themes returns the built-in and organization themes, newsletter_set_theme creates or updates a reusable organization theme, newsletter_delete_theme removes one after human confirmation, and newsletter_apply_theme copies a versioned snapshot onto a draft while preserving literal block overrides. Force application first uses newsletter_preview_theme_application to return four before-and-after render modes and a current confirmation token. Confirming with that token removes literal color overrides; a stale token is rejected.

Use newsletter_upload_image to import base64 PNG, JPEG, GIF, or WebP bytes through the same managed image pipeline as the editor. The returned reference works in every image-bearing block. To use the editor’s Microsoft 365 source, call newsletter_list_onedrive_images to browse folders and supported image files, then newsletter_import_onedrive_image to copy one into the same account-scoped managed image store. Both require Files.Read consent and EditNewsletters. newsletter_attach_image resolves an existing asset when its id is already known.

For video links, newsletter_create_asset_from_video_url accepts YouTube, Vimeo, and Loom URLs and stores the provider thumbnail as a managed image. Set the image overlay style to play. Saving the draft materializes and persists the server-composited play image, its generated 640px mobile crop, and requested Card or Gallery aspect-ratio crops before rendering. Email clients receive stable managed URLs, not a fragile CSS overlay or a provider-hotlinked thumbnail.

Guardrails

  • Policy controlled. MCP is enabled by default. An organization owner can disable it or limit the available bundles under Settings → MCP.
  • Per-client grants. Each connected client is granted explicit bundles, and client identifiers are stored only as hashes.
  • Confirmation for sensitive actions. Actions that need a human decision surface a confirmation before they proceed.
  • Separate tokens. MCP tokens are separate from your Microsoft Graph mailbox access and are never used to call Microsoft Graph.

Newsletter screenshot routing

When you ask an agent to view, show, download, inspect, capture, or obtain a newsletter screenshot, it must use newsletter_render_screenshots. By default, that tool returns the complete newsletter in desktop and mobile, light and dark variants. Optional mode and width filters return only the requested combinations. It must not recreate the newsletter from HTML, use browser automation, invoke a local renderer, generate a substitute image, or call the preview-link tool.

newsletter_capture_website_screenshot has a different purpose: it captures a webpage to place inside a screenshot content block. It supports desktop, tablet, and mobile viewports, bounded width and DPR, selector or region crop, full-page capture, delay, device frames, and a separate managed mobile asset. It must never substitute for rendering the complete newsletter.

Each official render includes server provenance, dimensions, a SHA-256 hash, filename, opaque artifact id, and expiry. Compatible clients receive the exact PNG through an MCP image block, an account-authorized resource link, and a structured manifest. Resource links use Cache-Control: no-store and expire after one hour. If a client cannot display MCP images directly, it can save those exact PNG bytes without rendering them again.

Connect Codex

SimpleNewsletter365 uses a curated public OAuth client. Dynamic Client Registration is not enabled, so Codex needs the client ID and resource URL. Codex’s default ephemeral OAuth callback port is supported. You do not need to edit config.toml or restart Codex before login.

  1. Replace any older server entry and add the curated client:

    codex mcp remove simplenewsletter365
    codex mcp add simplenewsletter365 --url https://app.simplenewsletter365.com/mcp --oauth-client-id simplenewsletter365-mcp-public --oauth-resource https://app.simplenewsletter365.com/mcp
    codex mcp login simplenewsletter365 --scopes mcp,offline_access
  2. Complete Microsoft sign-in and approve the SimpleNewsletter365 consent screen.

  3. After OAuth succeeds, the agent should stop using browser or computer automation for SimpleNewsletter365 and use MCP tools for every supported operation. If a tool is unavailable or not granted, it should explain the limitation instead of switching back to the web app.

  4. You can open Settings → MCP yourself to review the organization policy or adjust your own client grant.

The organization policy does not need to be enabled before OAuth discovery. New organizations are enabled by default. Only an explicit organization-level disable prevents a grant and tool use for that organization. OAuth login can still finish if the user belongs to another enabled organization.

If connection fails

  • Update Codex before retrying if the CLI does not recognize --oauth-client-id or --oauth-resource.
  • Remove and re-add an older server entry that was created without the curated client ID.
  • If Settings → MCP is missing, confirm the selected organization gives you at least one MCP-capable permission. Organization owners, team managers, newsletter editors and senders, contact managers, and short-link managers can open the page. Only organization owners can change organization-wide policy.

No recipient data is returned until the signed-in user’s permissions, the organization policy, and the user’s own client grant all allow the requested tool.