# SimpleNewsletter365 > SimpleNewsletter365 is a Microsoft 365-native newsletter tool for business subscriptions. It sends newsletters from your own Microsoft 365 mailbox over Microsoft Graph, using your real address and domain, with no shared sending pool. Personal Microsoft accounts are not supported. Contacts are unlimited on every plan; you are billed on emails sent, not on list size. ## What it does - Sends newsletters from your own Microsoft 365 mailbox (Microsoft Graph), not a shared marketing IP, for deliverability that matches your everyday email. - Unlimited contacts on every plan, including Free. Billing is metered on emails sent per month. - Contacts and segments, hosted signup forms with double opt-in and bot protection. - Optional custom domains for branded tracking links and click analytics. - Delivery, bounce, and unsubscribe reporting for every send. - Team roles and permissions, with shared mailbox or alias sending. - An authenticated MCP server with tools across newsletter drafting, reporting, audience management, send operations, and organization administration, always within the signed-in user's permissions. ## For AI agents (MCP) SimpleNewsletter365 exposes an authenticated Model Context Protocol server. Codex connects over OAuth 2.1 Authorization Code with PKCE and an explicit human consent step. Once connected, the agent acts as the authorizing user and stays within the user's account memberships, permissions, organization policy, and personal client grant. All five bundles are grantable and cover these MCP surfaces: - Newsletter drafting: list, read, create, rename, update, validate, preview, render full screenshots, capture website screenshot blocks, and test draft newsletters. - Reporting: delivery summaries, click engagement, recipient metrics, short-link events, recipient lists, and as-sent rendered output. Full recipient identity still requires ManageContacts. - Audience management: contacts (create, update, batch, import from CSV, OneDrive CSV, Outlook, or Microsoft Bookings), segments (including restore), signup forms, custom field labels, double opt-in subscriptions, unsubscribe tokens, and subscriber history. - Send operations: mailbox readiness, audience selection, and send start, pause, resume, and stop, each real send gated by human confirmation. - Organization admin: organization settings, team invitations and member permissions, custom domains, short links, plan management, and MCP policy and grants. Call `newsletter_get_capabilities` before authoring to read the live schema and renderer versions, supported block types, verified behavior, limits, and deferred capabilities. Then call `newsletter_get_block_schema` for the exact validator-derived JSON Schema Draft 2020-12, exact defaults, examples, ranges, enums, mobile behavior, dark-mode behavior, and client limitations. The current contract is schema 2.0.0 with renderer version 4. Version 1 remains readable during migration, but new writes should use v2. Schema 2.0.0 publishes 21 blocks: heading, paragraph, image, screenshot, button, divider, spacer, footer, columns, section, gallery, social, share, featureList, card, statRow, eyebrow, list, quote, comparisonTable, and labeledDivider. Do not infer fields from this summary. Read each block's live schema before authoring. Use `newsletter_set_content` with `dryRun: true` to validate and render a proposed full document without saving it. Use `newsletter_patch_content` with the draft's `updatedAt` as `expectedRevision` to change one field without overwriting concurrent editor work. Run `newsletter_lint` for structured desktop-light, desktop-dark, mobile-light, and mobile-dark findings, including contrast, overflow, tap-target, image, screenshot, scale, table, and heading rules. Emitted-render checks also detect desktop breakpoint collisions, mobile rules leaking into desktop modes, missing forced-dark output, saved presentation properties that have no effect on markup, and an injected system branding action that could wrap or remain fixed-width on mobile. `newsletter_render_preview` accepts explicit modes, at most four distinct widths from 320 through 1600 pixels, and `html` or `png` format. HTML returns the exact emitted email markup. PNG returns opaque artifact ids and account-authorized, `no-store` artifact URLs for each requested mode and width combination. Artifacts expire after one hour and still require the viewer's account permission. Provider capture URLs are never returned. The standard mobile preview is 375 pixels. Use 320 as the stress case and 390 as the second representative device width. Themes use the same discoverable contract. Call `newsletter_get_theme_schema`, then `newsletter_list_themes` or `newsletter_get_theme`. Use `newsletter_set_theme` for reusable organization themes and `newsletter_delete_theme` to remove an organization theme that is no longer needed after human confirmation. Existing drafts keep their copied snapshots. Use `newsletter_apply_theme` to copy a versioned snapshot onto a draft. Normal application preserves literal block overrides. Before force application, call `newsletter_preview_theme_application`, review its desktop light, desktop dark, mobile light, and mobile dark before-and-after renders, then pass its current confirmation token to `newsletter_apply_theme`. Force application removes literal color overrides. Later theme edits do not mutate the draft. For ordinary images, call `newsletter_upload_image` with raw base64 image bytes. It uses the same managed-image validation and optimization pipeline as the web editor and returns a reference that can be placed into any image-bearing block. Agents can also call `newsletter_list_onedrive_images` to browse the same OneDrive PNG, JPEG, GIF, and WebP sources exposed by the editor, then call `newsletter_import_onedrive_image` to copy the selected file into the account-scoped managed image store. Use `newsletter_attach_image` only when you already know an existing asset id. For a linked video image, call `newsletter_create_asset_from_video_url` with a YouTube, Vimeo, or Loom URL. It stores a managed thumbnail and returns its canonical destination. Set `overlay.style` to `play`. Saving the draft materializes and persists the server-composited PNG plus any generated 640px mobile crop and requested Card or Gallery aspect-ratio crop before rendering. Image, Screenshot, Card media, and Gallery content then reference stable managed URLs. The play icon is never smaller than 48px, and optional duration text is burned into the asset rather than positioned with email CSS. Start every session by calling accounts_list with no arguments: it returns the accounts you belong to with their ids and your permission set, and account-scoped tools take one of those accountIds. If the list is empty, onboard entirely over MCP: call legal_accept (the human must have agreed to the terms), then account_create with a display name; the signed-in user becomes the Owner and the returned accountId works with account-scoped tools immediately. Destructive or security-sensitive actions create a pending confirmation the human approves in the web app (Settings > MCP) or, for standard actions, with a one-time code; access-changing actions always require web approval. Billing checkout, the billing portal, and mailbox consent are returned as short-lived handoff URLs the human opens in their browser; treat those URLs as secrets and do not store them. Newsletter draft tools return `editorUrl`, and preview tools return `reviewUrl`. These are authoritative authenticated browser deep links built by the server. Return them verbatim when the human wants to open or review the newsletter. Never guess or assemble an application route from an account, campaign, or snapshot id. These links are not bearer URLs: opening one still requires the human's existing SimpleNewsletter365 browser session and normal account permissions. When the user asks to view, show, download, inspect, capture, or obtain a screenshot of a SimpleNewsletter365 newsletter, you MUST call `newsletter_render_screenshots`. NEVER recreate the screenshot from HTML, use browser/computer automation, invoke a local rendering engine, or generate a substitute image. If the client cannot display MCP image blocks, save the exact returned PNG bytes unchanged and present those files. Saving or decoding returned bytes is presentation, not rendering. `newsletter_render_screenshots` renders the complete newsletter. `newsletter_capture_website_screenshot` captures a webpage for use inside a screenshot content block. Never use the website-capture tool as a substitute for rendering the newsletter. `newsletter_render_screenshots` renders the same newsletter snapshot and preview component used by the web app. By default it returns four complete PNG images: desktop light, desktop dark, mobile light, and mobile dark. Optional mode and width filters return only the requested combinations, with at most four distinct widths. Each image includes only the full newsletter content, not the preview label, From, Subject, Preheader, or visible editor viewport. Desktop images use Urlbox's high-resolution @2x retina rendering. Analyze the returned images directly for overflow, clipping, contrast, spacing, and responsive-layout problems. Every image includes `source: "simplenewsletter365-server-render"`, a render id, campaign id, snapshot id, dimensions, SHA-256 hash, filename, MIME type, opaque artifact id, and expiry. The tool returns each PNG as MCP `ImageContent`, a labeled `ResourceLink`, and an entry in its structured manifest. These are the authoritative server-rendered newsletter PNGs. Forward them to the user unchanged. Do not re-render or regenerate them. Resource links are account-authorized, use `Cache-Control: no-store`, and expire after one hour. The temporary provider capture URL remains private and is never returned. Use `newsletter_capture_website_screenshot` before adding a `screenshot` block. Keep the input URL as `sourceUrl` and copy the returned managed asset fields into `asset`. Read the Screenshot schema for responsive width, `captureViewport`, `mobileCaptureViewport`, capture region or selector, `capturedAt`, device frame, and dark treatment fields. The current capture tool accepts those capture parameters and returns a second managed `mobileAsset` when `mobileCaptureViewport` is set. Copy that asset's `sendUrl` to `assetUrlMobile`; do not claim that a mobile capture exists when the response does not supply one. Codex setup: 1. Use Codex's default ephemeral OAuth callback port. Do not add `mcp_oauth_callback_port` to the user's config or require a preliminary restart. 2. Run `codex mcp remove simplenewsletter365` if an older entry exists. 3. Run `codex mcp add simplenewsletter365 --url https://app.simplenewsletter365.com/mcp --oauth-client-id simplenewsletter365-mcp-public --oauth-resource https://app.simplenewsletter365.com/mcp`. 4. Run `codex mcp login simplenewsletter365 --scopes mcp,offline_access`. 5. The human completes Microsoft sign-in and approves the SimpleNewsletter365 consent screen. 6. After OAuth succeeds, stop using browser or computer automation for SimpleNewsletter365. Use the MCP tools for every supported operation. 7. If an operation is not exposed or granted through MCP, state that limitation. Do not silently fall back to navigating or clicking the web app. SimpleNewsletter365 uses a curated public OAuth client and does not expose Dynamic Client Registration. MCP is enabled by default for new organizations. The organization policy does not need a separate enable action before OAuth discovery or login. An organization owner can explicitly disable MCP or narrow allowed bundles under Settings > MCP. Each member can review or revoke their own client grant there. Microsoft 365 and mailbox tokens remain server-side and are never placed on the MCP token. Details and recovery steps: https://www.simplenewsletter365.com/help/automate-with-mcp ## Who it is for Businesses, teams, and individuals with a Microsoft 365 business subscription who want newsletters that send from their own mailbox and domain instead of a shared marketing IP. ## Pricing Send-metered, with unlimited contacts on every plan. Free includes 10,000 sends per month. Paid plans (billed monthly or annually) add custom domains, click analytics, team seats, and higher send allowances. Full structured pricing: https://www.simplenewsletter365.com/pricing.md ## Key pages - Homepage: https://www.simplenewsletter365.com/ - Features: https://www.simplenewsletter365.com/features - AI agents and MCP: https://www.simplenewsletter365.com/ai - Pricing: https://www.simplenewsletter365.com/pricing - Security: https://www.simplenewsletter365.com/security - Help center: https://www.simplenewsletter365.com/help - Blog: https://www.simplenewsletter365.com/blog - Machine-readable pricing: https://www.simplenewsletter365.com/pricing.md