Your account

MCP server

Connect ChatGPT, Claude, Gemini, Codex, Cursor, GitHub Copilot, Windsurf, Notion Agent, Grok Bot, Hermes Agent or any MCP app to your workspace with a sign-in or an API key, and plan, draft and schedule posts in a conversation.

MCP server

Postfjord has an MCP server, which lets ChatGPT, Claude, Gemini and other AI apps work in your workspace directly: list the calendar, create drafts, schedule posts, read the brand profile and the publish log, and draft, schedule and follow up your emails.

ChatGPT, Claude, Gemini, Grok Bot, Hermes Agent and Notion Agent connect to Postfjord with one link and your Postfjord login. You paste no key and install nothing. This is the link:

`` https://mcp.postfjord.com/mcp ``

The older link, https://app.postfjord.com/api/mcp, still works. Apps you connected with it stay connected, and you can use either link in the steps below.

You need to be the owner of the workspace, and the workspace needs a plan with the API (Solo or bigger).

When you have more than one workspace, the sign-in starts on the workspace Postfjord opens for you, and the line above Allow names the workspace the app gets. Pick another one in the Workspace list before you press Allow.

ChatGPT

On ChatGPT plans that let you add your own apps:

  1. In ChatGPT, open Plugins, press + and pick Add custom MCP server. If you do not see it, turn on developer mode in ChatGPT's settings first.
  2. Name it Postfjord. Under Connection, paste the link. Choose OAuth as the sign-in.
  3. Press I understand and want to continue, then Create as a plugin.
  4. Sign in to Postfjord, pick the workspace and what ChatGPT may do, and press Allow.

Claude

This works on claude.ai and in the Claude apps for your computer and phone. They share the same connectors.

  1. Open Customize, then Connectors, and press Add custom connector. On a Team or Enterprise plan, an owner adds it under Organization settings, then Connectors.
  2. Paste the link as the server URL. Press Add, then Connect.
  3. Sign in to Postfjord, pick the workspace and what Claude may do, and press Allow.

Gemini

The Gemini app at gemini.google.com lets you add your own apps if you are 18 or over, in the US, signed in with a personal Google account, and have Keep Activity on.

  1. Open Settings, then Connected Apps. Under Custom apps, press Add a custom app.
  2. Paste the link and press Next. Leave Advanced features closed.
  3. Sign in to Postfjord, pick the workspace and what Gemini may do, and press Allow.

In a chat, type @ and pick Postfjord when you want Gemini to use it.

Gemini CLI, Gemini in the terminal, uses the same sign-in.

  1. Add this to ~/.gemini/settings.json, the file settings.json in the .gemini folder in your home folder. If the file already has mcpServers, add the postfjord line inside it:

`` { "mcpServers": { "postfjord": { "httpUrl": "https://mcp.postfjord.com/mcp" } } } ``

  1. Start Gemini CLI and type /mcp auth postfjord.
  2. Sign in to Postfjord, pick the workspace and what Gemini may do, and press Allow.

The first time Gemini CLI uses Postfjord it asks if it may. Pick Allow all server tools for this session to answer once.

Gemini Enterprise asks its admin for a client ID and secret made in advance. Postfjord does not hand those out yet, so Gemini Enterprise cannot connect for now.

Grok Bot

Grok Bot is xAI's agent that keeps working on its own cloud computer. It needs SuperGrok or a paid Cursor plan, and there is a free trial.

  1. In the Grok Bot app, write: Add a custom MCP server called Postfjord at https://mcp.postfjord.com/mcp
  2. Press Add it, then Authorize.
  3. Sign in to Postfjord, pick the workspace and what Grok Bot may do, and press Allow.

Hermes Agent

Hermes Agent is an open source agent from Nous Research that runs on your own computer or server.

  1. Run this in a terminal:

`` hermes mcp add postfjord --url https://mcp.postfjord.com/mcp --auth oauth ``

  1. A browser opens. Sign in to Postfjord and pick the workspace and what Hermes may do.
  2. Press Allow within 30 seconds. If you miss it, run the command again.

We tested both on October 6, 2026: they listed the channels, read the brand profile, wrote a draft and found it in the calendar, read analytics, the Inbox, automations and pages, and removed the draft again.

Notion Agent

Notion Agent and Notion's Custom Agents can work in Postfjord. You need a Notion Business or Enterprise plan, on the web or in the Notion app for your computer. The phone app cannot add it yet.

  1. A Notion owner or admin turns on custom MCP servers first. Notion's help names two places for the switch: Settings, Connections, Manage, or Settings, Notion AI, AI connectors. Use the one your workspace shows.
  2. Open Settings, then Connections, then Discover, and press Add Custom MCP. Paste the link.
  3. Sign in to Postfjord, pick the workspace and what Notion may do, and press Allow.

A Custom Agent connects on its own. Open the agent's Settings, then Tools & Access, press Add connection, then Custom MCP server, and paste the same link. Each person in Notion connects Postfjord on their own.

If Notion's form asks for a header instead of a sign-in, make a key under Settings, Apps in Postfjord and use Authorization: Bearer pf_live_....

What happens when you connect

The app gets a key of its own, named after it, for example "ChatGPT (connected)" or "Claude (connected)". You find it under Settings, then Apps, then Your keys, with the time it was last used.

  • Press Revoke there to disconnect the app. It stops at once.
  • The screen shows the address you go back to, and says when Postfjord does not know the app or when the app runs on your own computer. Connect only apps you started yourself.
  • ChatGPT and Claude are shown by name when they send you back to their own sign-in address. For any other app the screen never starts on Schedule and publish: you pick that yourself if you want it.
  • An app that has not been used or connected for 90 days is forgotten and asks you to connect again. Its key keeps working until you revoke it.
  • An app Postfjord does not know cannot call itself Claude, ChatGPT, Gemini, Postfjord or another known name. It is shown as "An MCP app" instead.
  • Apps that run on their own servers, such as Perplexity, Mistral or AWS AgentCore, get a secret of their own when they connect. Postfjord keeps only a scrambled copy of it and checks it each time the app signs in.

Work across your workspaces

Agencies often run one Postfjord workspace per client. One connected app can work in all of them.

  1. Connect the app with a sign-in, as above. A key you paste works in one workspace only.
  2. On the Postfjord screen, pick your own workspace and what the app may do, then tick Also let Claude work in my other workspaces (the box names your app). You see it when you belong to more than one workspace.
  3. Press Allow. Under Settings, then Apps, then Your keys, the app's key now says All workspaces.

Then name the client in the chat:

  • "Which clients have empty days next week?"
  • "Draft next week's posts for each restaurant client, three each, as drafts."
  • "Did anything fail for Bistro Norr this week? Show me why."
  • "Which posts are still waiting for a client's approval?"

The app first asks Postfjord for your workspaces, with each one's name, your role and what the app may do there. One summary covers all of them at once: the days with nothing scheduled in the next 7 days, posts that failed in the last 30 days, and posts waiting for a client's answer on a review link. Then it calls each tool with the workspace's name or id. Without one, it works in the workspace you picked when you connected.

Every call is checked again in the workspace it names:

  • Your role there. Owners only, the same people who may make a key there. Where you are an editor or a viewer, the app sees the workspace's name in the list and does nothing there, not even the summary. Ask an owner of that workspace to connect the app from it.
  • The level you picked. Read only, Drafts only or Schedule and publish, the same in every workspace.
  • That workspace's own rules. Its plan needs the API, a suspended workspace answers nothing, a paused workspace schedules and sends nothing, and drafts from Postfjord's AI use that workspace's AI budget and plan limits.

The first time the app works in a workspace, that workspace's owners get an email about it, and the app shows under Settings, then Apps, then Your keys there, with the workspace it was connected in. Revoke there stops it in that workspace only; it keeps working in your others.

When someone removes you from a client's workspace or makes you an editor there, the app stops working there on the next call. If it had already worked there, it stays out when you are made an owner again, until you connect it again. If it never worked there, it works there as soon as you are an owner again. Workspaces you become an owner of later are in the list straight away. To stop the app everywhere, revoke its key in the workspace you connected it in. It then shows as revoked in every workspace it worked in, so no client's owners see it as live. The same happens when the workspace you connected it in is deleted, and when Postfjord revokes all your keys, for example after a new password or Sign out everywhere.

To change an app you connected before, connect it again and tick the box. Its old key in that workspace is replaced. An app that already works in all your workspaces has one key: connecting it again from another workspace replaces that key too.

Connect with a key

Some apps take a key instead of a sign-in: Claude Code, Codex, Cursor, GitHub Copilot, Windsurf, VS Code and most other MCP apps. They use the same link and send the key in a header.

The easy way is in the app. Open Settings, then Apps, and press your app's card under AI apps and agents. Three numbered steps follow: choose what the app may do, make and copy the key, and paste it in the app. The text to paste already holds your key. See Connect other apps for the whole tab.

The snippets below are the same ones, for when you set things up by hand. Make a key under Settings → Apps → Advanced: make a key by hand, and replace pf_live_... with it. The key is shown once.

Claude Code

Paste this in a terminal:

`` claude mcp add --transport http -s user postfjord https://mcp.postfjord.com/mcp --header "Authorization: Bearer pf_live_..." ``

-s user makes Postfjord available in every folder. Give each workspace its own name (postfjord-studio, postfjord-shop) if you connect more than one. The setup in the app names it after your workspace for you.

Claude Desktop

The easiest way is the connector under Claude: Claude Desktop uses the same one. If you would rather use a key, add Postfjord in its settings file: Settings → Developer → Edit Config, then paste this and restart Claude Desktop. It needs Node.js on the computer, which runs a small bridge called mcp-remote.

`` { "mcpServers": { "postfjord": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.postfjord.com/mcp", "--header", "Authorization:${AUTH_HEADER}"], "env": { "AUTH_HEADER": "Bearer pf_live_..." } } } } ``

If the file already lists other servers, put the postfjord part next to them inside mcpServers.

Codex

Codex is OpenAI's coding agent. Add this to ~/.codex/config.toml, the file config.toml in the .codex folder in your home folder:

`` [mcp_servers.postfjord] url = "https://mcp.postfjord.com/mcp" http_headers = { "Authorization" = "Bearer pf_live_..." } ``

Codex in the terminal, the Codex add-on for code editors and the ChatGPT desktop app all read this file, so one setup covers all three.

Cursor

Cursor uses about 40 tools in all, across every server you add, and Postfjord has more than 60. So Cursor gets a shorter list: the 25 tools for posts, the calendar, media, analytics and Inbox replies. That is the ?tools=core at the end of the link. Email, landing pages, Mentions and Flow are not in it. For those, use an app that takes every tool, such as Claude Code or Codex.

Add this to ~/.cursor/mcp.json:

`` { "mcpServers": { "postfjord": { "url": "https://mcp.postfjord.com/mcp?tools=core", "headers": { "Authorization": "Bearer pf_live_..." } } } } ``

GitHub Copilot

Copilot Chat in VS Code and the Copilot CLI both take Postfjord with a key.

On Copilot Business or Enterprise, an owner of the organization first sets MCP servers in Copilot to Enabled. It is under Settings, Copilot, Policies for the organization. Copilot Free, Pro, Pro+ and Max need nothing here.

Copilot Chat in VS Code, version 1.99 or later:

  1. Add this to .vscode/mcp.json in your project. VS Code asks for the key when the server starts, so the key is not saved in the file:

`` { "inputs": [ { "type": "promptString", "id": "postfjord-key", "description": "Postfjord API key (pf_live_...)" } ], "servers": { "postfjord": { "type": "http", "url": "https://mcp.postfjord.com/mcp", "headers": { "Authorization": "Bearer ${input:postfjord-key}" } } } } ``

  1. In the file, press Start above postfjord and paste your key.
  2. Open Copilot Chat, pick Agent, and press the tools button in the chat box. The Postfjord tools are in the list.

Copilot CLI:

  1. Run this in a terminal, with your own key:

`` copilot mcp add --transport http postfjord "https://mcp.postfjord.com/mcp" --header "Authorization: Bearer pf_live_..." ``

  1. The command saves Postfjord in ~/.copilot/mcp-config.json. Your key is in that file, so keep it to yourself.
  2. Start copilot and ask what is in your Postfjord calendar this week.

Tools from every server you add count together in one chat. If Copilot says there are too many tools, use the shorter link https://mcp.postfjord.com/mcp?tools=core, the same 25 tools as Cursor.

Windsurf

Postfjord works in Cascade, the chat panel in Windsurf, with a key.

  1. In the Cascade panel, press ... at the top right, then Open MCP config file.
  2. Add Postfjord under mcpServers and save. If the file already lists other servers, put the postfjord part next to them:

`` { "mcpServers": { "postfjord": { "serverUrl": "https://mcp.postfjord.com/mcp", "headers": { "Authorization": "Bearer pf_live_..." } } } } ``

  1. In the MCPs part of the Cascade panel, turn Postfjord on and press the refresh button. It shows how many tools Postfjord has.

Cascade uses at most 100 tools at a time, across every server you add. Postfjord has more than 60, so it fits on its own. If you add other servers too, use the shorter link https://mcp.postfjord.com/mcp?tools=core, the same 25 tools as Cursor.

On Windsurf Teams and Enterprise, an admin switches MCP on for the team. If the admin keeps a list of allowed servers, ask them to add https://mcp.postfjord.com/mcp.

VS Code and other MCP apps

Add this to .vscode/mcp.json in your project:

`` { "servers": { "postfjord": { "type": "http", "url": "https://mcp.postfjord.com/mcp", "headers": { "Authorization": "Bearer pf_live_..." } } } } ``

Other MCP apps need the same two things: the address https://mcp.postfjord.com/mcp and the header Authorization: Bearer pf_live_....

ChatGPT connects with a sign-in, see ChatGPT. On a plan without developer mode, a custom GPT works too, as described under ChatGPT.

What a key may do

Every key has one level, chosen when you create it:

Your keys, and what each one may do.
Your keys, and what each one may do.
  • Read only: calendar, channels, brand profile, media and publish log, for email the overview, your contacts who said yes, your campaigns and their reports, and the Inbox and your DM automations. Nothing changes.
  • Drafts only: also create and edit drafts, email drafts too, add pictures and videos to the media library, cancel scheduled posts, ask the composer for text, ask Postfjord's AI for a reply to a message, or build a DM automation. A draft can never get a date, a new automation starts paused, a post or email that is already scheduled cannot be edited, and a drafted reply is only text, so nothing goes out.
  • Schedule and publish: everything, including a time on a post, publish now, scheduling, unscheduling or cancelling an email, sending a reply in the Inbox and switching an automation on or off.

The setup in the app picks Drafts only for you. Keys created before 19 September 2026 have full access. To change a key's level, create a new key and revoke the old one.

Apps can send at most 200 Inbox replies a day for a workspace, and one key can read at most 5,000 contacts a day. Past that, answer in the Inbox or export the list from the Contacts screen. The lists apps read (posts, media, emails, the Inbox and the rest) share an allowance of 250,000 records a day per workspace, and one page of posts or media holds at most 200. Each call counts only the records it read, so a short list costs little. Near the end of the allowance, a call needs room for the most it could read, so ask for smaller pages. That is far more than an app needs to work for you all day. Past it, lists answer again after midnight UTC.

A key belongs to the owner who created it. If that person leaves the workspace or stops being an owner, their keys stop working. So do all of a person's keys and AI app connections, in every workspace, when they choose a new password, press Sign out everywhere or delete their account. Every owner gets an email when a key is made or an app connects.

Meta Muse and other agents

Muse builds its own connector from our public API document, so it needs no server on your computer. Press Set up on the Meta Muse card under Settings → Apps, or read the steps on postfjord.com/muse. Any other agent or tool can read the same document at postfjord.com/openapi.json and the connector brief at postfjord.com/connectors/muse.md.

What Claude can do

List channels and media, add pictures and videos to the media library, read the brand profile, read your analytics (followers, likes and comments, the top posts and the best times to post), create and update drafts, schedule or cancel posts, publish now, and read the publish log. Claude can also ask Postfjord's own AI composer for a draft in your voice, up to 20 drafts a minute for a workspace.

The calendar

Claude reads the notes on your calendar, like "Black Friday" or "Studio closed", together with the posts, and can add, change or delete a note. When it does not name the days, it reads the next 30. A note is never posted. It can also change up to 200 posts in one go: move them by some days or to a new start date, turn them into drafts, cancel them or delete them. Moving posts needs the Schedule and publish level and waits while the workspace is paused. Claude asks you before it deletes, and says how many posts it is. See Calendar.

Pictures and videos

Claude can put a picture or video in your media library and use it in a draft straight away. Give it a link to the file, for example from your website, Dropbox or Google Drive, and ask for a post with it.

  1. The link must open the file itself, not a page about it. A share link that shows a preview page first does not work; in Dropbox, change the end of the link to dl=1.
  2. Postfjord takes JPEG, PNG, WebP and GIF pictures up to 50 MB, and MP4 and MOV videos up to 500 MB. The file must download within 50 seconds.
  3. The file counts against your plan's storage like one you upload yourself. When the storage is full, Postfjord says so and adds nothing.
  4. Apps can add at most 500 files a day to a workspace, and at most 30 a minute.
  5. A picture is ready in a few seconds and a video within a minute. Postfjord makes the sizes each platform needs and reads a video's length, so a draft warns you when a video is too long for a channel.
  6. A post with the file can be scheduled once the file is ready.

Nothing is posted when a file is added. The key needs the Drafts only level or higher.

How each picture looks on each channel

Every channel sends a picture in its own shape, as under Fit in the composer. Claude can choose that shape for you and show you the result before anything is scheduled.

  1. Ask for a post with your picture. Claude picks Auto, which keeps your photo's shape where the platform takes it.
  2. Claude shows you the picture each channel will send. Before it schedules a post, it should always do this.
  3. Say what you want changed, like "show the whole picture on Instagram" or "keep her face in the middle". Claude changes the shape, the crop or the zoom and shows you again.
  4. When a crop would cut off a person or the words on a poster, Claude picks Show whole image: nothing is cut, and the empty space gets a soft blurred copy of your picture.

The picture links Claude shows you work for one hour. Making a new picture for a channel takes a few seconds, and an app can make at most 60 for one post and 500 a day for a workspace. Looking does not change the post. With a Read only key Claude shows only the pictures that are made already, and makes no new ones. Posts made before shapes keep their old crop until you change their shape.

Turn pictures into a reel

Ask "make this post a reel" or "make a story from these three pictures". The app makes a short tall video from the pictures, as Make it a reel does in the composer, and puts it on a new draft. The video takes about a minute; the app checks when it is ready and then shows you the draft. Nothing is posted until you say so. Each plan makes a few videos a day, and the key needs the Drafts only level or higher.

It works on a post you already have too: ask "make a story from yesterday's post". The post stays as it is, and a new draft is made. A story of one picture can be the picture itself instead of a video, as Make a story does in the app: sharp, ready at once, and not one of the day's videos.

Resize a picture

Ask "make this photo square, portrait and story size". The app makes a new picture for each shape in your media library, as Resize does, and your original stays as it is. It can do this right after it uploads a photo. Where a crop would cut off a person or the words on a poster, it should show the whole picture on a soft blurred background instead. The new pictures count toward your storage and toward the plan's new pictures a day, and the key needs the Drafts only level or higher.

For email, Claude can:

  • see whether email is on, your sender, how many people said yes, how many emails are left this month, and your saved segments,
  • list your contacts who confirmed, with name, email, tags and the date they were added, 50 at a time. People who unsubscribed are never listed,
  • list your campaigns and automation emails with their numbers, and read one email's report with the clicks per link,
  • write a new email draft in your brand colors with your logo on top, or ask Postfjord's AI to draft one from a brief, and change a draft's subject, preheader or blocks,
  • schedule a draft to everyone who said yes or to one segment, and unschedule or cancel it.

Scheduling runs the same checks as the Send button in the app: sending must be open for your workspace, the email must pass the checks, and the month must have emails left. A large first email still waits for Postfjord to look at it. One key can ask the AI for at most 10 email drafts a minute. Claude never sends an email by itself, never changes who said yes, and never deletes a contact. See Email campaigns.

In the Inbox, the app can list your conversations, read one, have Postfjord's AI draft a reply in your voice and, with the Schedule and publish level, send a reply. It sees what you see in the Inbox list: the person's name, the last messages and the tags. The Inbox tools never give it an email address. Only the email contacts list above has addresses. On WhatsApp the person's phone number is part of the conversation id, as in the Inbox. It can also list your DM automations with what starts them and how many people they reached, build a new one, and switch one on or pause it.

A reply from an app follows the same rules as a reply you send yourself, and a few more:

  1. It only goes out within 24 hours of the person's last message. Instagram, Messenger and WhatsApp allow nothing else. After that the app is told the window is closed and why.
  2. It never goes to a person who asked you to stop.
  3. It never goes out from a suspended workspace.
  4. One key can send at most 10 replies a minute.
  5. The reply pauses your automations in that conversation, as when you answer yourself. It shows in the Inbox like any other reply, and the conversation stays unread and keeps its hand for a person, so your team still sees it.

Claude can build a new DM automation for Instagram or Facebook from a chat: a keyword in a DM or a comment, a story reply or mention, a ref link, an away message, or Ask for a review after a booking or sale. It writes the messages and can add a link, a follow gate, an email question, a follow-up, a wait, a question saved to a contact field, a tag and a hand-over to Postfjord's AI.

  1. A new automation is always paused. It answers nobody until you switch it on.
  2. Claude shows you what it built and switches it on only when you say yes, with a Schedule and publish key. You can also open it under Automations and press Activate.
  3. Claude names a tag in words, like Spring workshop. If you have no tag with that name yet, Postfjord makes it. Removing a tag, contact fields and conditions are added in the app, and so is editing an automation.
  4. One key can create at most 10 automations a minute, and apps at most 50 a day for a workspace.

Flow

A Flow is one thing you want, turned into posts, a DM, a page and welcome emails. Tell Claude "start a flow" and what you want, like "fill 20 spots in my beginner program by May 1". Claude asks Postfjord to plan the whole path:

  • posts on your dates and channels,
  • an automation that sends a DM with the link when someone comments a word you pick,
  • a landing page with a signup form,
  • one to three welcome emails for the people who sign up.

Here is what happens, step by step:

  1. The plan. Postfjord's AI writes it in your voice. It uses your AI budget. Only the plan is saved: no post, page, form or email exists yet, and nothing is sent.
  2. You read it. Claude shows you every post, the word and the DM, the page and each email. Ask for changes in your own words. Claude changes the plan and shows it again.
  3. You say yes. Then Claude asks three things: should the posts go out on their dates or wait as drafts, should the DM automation start now, and should the welcome emails start now. Nothing turns on that you did not ask for.
  4. The launch. Postfjord makes every part once. A post that needs a photo waits as a draft, and Claude tells you which ones.

Launching needs a key that may Schedule and publish. Planning and changing a plan need Drafts only or more. You can also stop a Flow from a chat: posts that have not gone out are cancelled and the rest switches off, but your contacts and tags stay.

Claude can also build one part at a time: list and create signup forms, create an email automation as a draft and start or pause it, list your tags, add a contact and tag a contact. A new signup form is live at once, so it needs Schedule and publish. Everyone who signs up gets an email to confirm first.

With landing pages switched on, Claude can also work on your link in bio page and landing pages on postfjord.page: list them with their views and taps, read one, write a new draft from your photos and links, change a draft, and publish or take a page offline.

  • A new page is a draft in your brand colours. Photos come from your media library, and a signup form block uses one of your signup forms.
  • A change to a live page stays a draft until it is published again, as in the app.
  • Publishing runs the same checks as the Publish button: words in [brackets], text that asks for passwords, every link checked with Google, and your plan's number of pages. If a check fails, nothing goes live and Claude gets the list of what to fix.
  • Publishing and taking a page offline need a key that may Schedule and publish.

Things to ask

Once it is connected, talk to it the way you would to a colleague who has your calendar open:

  • "Plan next week: three posts for Instagram and Facebook, Tuesday, Thursday and Saturday at 9, in our voice."
  • "What is scheduled for the next two weeks? Where are the gaps?"
  • "Turn this blog post into a LinkedIn post and a shorter one for Threads, as drafts."
  • "Move Friday's post to Monday at 10 and rewrite the first sentence."
  • "Use the photo from last week's event in the media library and write a post about it."
  • "Add these ten photos from our website to the media library and make a draft for each."
  • "Did yesterday's post go out? If something failed, tell me why."
  • "Which posts did best last month? Plan three more like them for next week."
  • "Draft an email about our new fall menu with the latte photo and a button to the menu page. Leave it as a draft."
  • "How did last week's email do? Which link got the most clicks?"
  • "How many people are on my email list, and how many are in the VIP segment?"
  • "Schedule the fall menu email to the VIP segment for Tuesday at 9 am Chicago time."
  • "Who is waiting for an answer in the Inbox? Draft a reply to each and show me before you send."
  • "Answer the person who asked about Saturday's class: yes, 9 am, and there are still spots."
  • "Which automation brought in the most people last month? Pause the one for the summer sale."
  • "When someone comments GUIDE on a post, send them the guide link in a DM and ask for their email. Show me before you switch it on."
  • "Start a Flow: I want 30 people at the open house on June 7. Show me everything before you launch."
  • "How is the spring program flow doing? How many people signed up?"
  • "Make a link in bio page with our logo, a button to book a class, our schedule and our Instagram. Keep it as a draft."
  • "Which of our landing pages got the most views this month?"
  • "Change the price on the free class page to $15 and publish it again."

New posts and emails land as drafts unless you ask Claude to schedule or publish them, and your key's level decides what it may do.

When an app asks twice

An AI app sometimes sends the same request again, for example when Postfjord took long to answer. Postfjord then does it once: one draft, one scheduled post, one email, one reply.

  • Tools that make or send something take idempotency_key, an id the app makes up for that one action. The same id again within 24 hours gets the first answer back, and nothing runs a second time. The same id with other content is refused, so the app picks a new one.
  • Without an id, the exact same request within 10 minutes counts as the same action. Two requests are the exception, because asking again after a change is how they are used: publishing a page and scheduling an email. Without an id, each of those runs every time.
  • While the first request is still running, a second one is told to wait and look at the calendar instead of asking again.
  • A request that failed is not remembered, and neither is a publish that did not go out on every account, so the app can fix it and send it again.

Times say their time zone. A time to schedule a post ends in its offset, for example 2026-11-02T09:00:00-05:00 for 9 in the morning in New York, or in Z for UTC. A time without one is refused, so a post never goes out at the wrong hour.

Check before scheduling. postfjord_create_draft and postfjord_schedule_post take dry_run: true. Postfjord then saves nothing and answers what would happen: draft or scheduled, the accounts, the time in your workspace's time zone, the problems per account, and anything that would stop it.

The REST API has the same: send an Idempotency-Key header (1 to 128 characters) with any call that makes or sends something, and add ?dryRun=1 to POST /v1/posts or PATCH /v1/posts/{id} to check a post. A repeated answer comes with the header Idempotent-Replayed: true.

Safety

The key belongs to one workspace and one role. An app you connected to all your workspaces works in each one only as far as your role there allows, checked on every call. Everything Claude does is logged like any other user action, and it can only write posts as drafts or scheduled, never publish without the tool that does so being called explicitly.

FAQ

Is the MCP server free?

It costs nothing on top of your plan. API keys and the MCP server are included from the Starter plan. If a workspace moves to Free, its keys stop working and answer with a message that says which plan they need; they work again after an upgrade. It uses the same REST API as the app, and AI drafts requested through it use the workspace AI budget like drafts in the app.

Do I need an MCP app to use Claude in Postfjord?

No. Bo, the composer and every other AI feature in Postfjord run on Claude already, included in your plan. The MCP server is for when you want to work from Claude Desktop, Claude Code or another app you already use.

What happens when an agent tries something outside the key's level?

It gets a 403 with a message that names the level it needs. Nothing changes in the workspace.

Can one app work for all my clients?

Yes, when you connect it with a sign-in and tick the box that lets it work in your other workspaces. It works in each workspace where you are an owner, with the level you picked. The owners of each workspace get an email the first time it works there and can revoke it for their workspace. A key you make by hand or paste stays in one workspace. See Work across your workspaces.

Can I revoke a key?

Yes, under Settings → Apps → Your keys. Revoking stops it immediately.

Why does every call answer that the workspace is suspended?

A suspended workspace has no API or MCP access, so every call gets a 403 with that message. The keys stay valid and work again once the suspension is lifted. See Workspaces and members.

Can Claude upload photos from my computer?

Not through ChatGPT or Claude.ai: they reach Postfjord over the internet and cannot open files on your computer. Give them a link to the file instead. A developer who runs the MCP server on their own computer can send a file from it, up to 30 MB. A script can send a file straight to the API, as described in our API document under uploadMedia.

Can Claude send an email to my list?

Only with a key at the Schedule and publish level, and only by scheduling a draft through the same checks as the Send button in the app. Sending must be open for your workspace, and a large first email waits for Postfjord to look at it. With a Drafts only key, Claude can write and change email drafts, and a person on your team sends them.

Do I need to run anything myself?

No. Postfjord runs the server. The only exception is Claude Desktop set up with a key in its settings file, which needs Node.js for the small bridge described above. Connecting with a sign-in needs nothing on your computer.

Claude says it cannot connect. What do I check?

That the whole key is in the command, including pf_live_, and that the key is not revoked under Settings → Apps → Your keys. A wrong or revoked key gets a 401, a suspended workspace a 403. Run claude mcp list to see whether Claude Code reached the server.

Related pages

SocialChatMailAll help