Beehiiv MCP Server & CLI
A free, open source Beehiiv MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents draft posts, manage subscribers and segments, and read your stats.
0.0(0 ratings)- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add beehiiv \
-e BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
In Claude Code, type /mcp. Beehiiv should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add beehiiv -e BEEHIIV_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
In Claude Code, type /mcp. Beehiiv should show as connected.
/mcp
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
claude mcp add beehiiv \
-e BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
In Claude Code, type /mcp. Beehiiv should show as connected.
/mcp
- 1Download the extension
Download the Claude Desktop extension.
- 2
Double-click it, and Claude Desktop installs it.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add beehiiv \
--env BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add beehiiv --env BEEHIIV_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
codex mcp add beehiiv \
--env BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Codex lists it.
codex mcp list
- 1
Open Cursor's settings, go to the MCP tab, and click Add new global MCP server.
- 2
Add the server.
Put your own API key in place of the example.
{
"mcpServers": {
"beehiiv": {
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Open the MCP tab again. It should show 117 tools.
- 1
Open the Command Palette and run MCP: Open User Configuration.
- 2
Add the server to that mcp.json.
If the file already has servers, add only this one inside servers. Put your own API key in place of the example.
{
"servers": {
"beehiiv": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add beehiiv \
--env BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get beehiiv
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add beehiiv --env BEEHIIV_API_KEY="YOUR_API_KEY" -- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get beehiiv
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
copilot mcp add beehiiv \
--env BEEHIIV_API_KEY=YOUR_API_KEY \
-- npx -y @thenavidm/beehiiv-mcp-cli@latest - 2
Check that Copilot CLI has it.
copilot mcp get beehiiv
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"beehiiv": {
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
%USERPROFILE%\.gemini\settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"beehiiv": {
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your Gemini CLI settings.
~/.gemini/settings.json - 2
Add the server to settings.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"beehiiv": {
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart Gemini CLI and type /mcp to check it.
/mcp
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"beehiiv": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"enabled": true,
"environment": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
%USERPROFILE%\.config\opencode\opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"beehiiv": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"enabled": true,
"environment": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Open your OpenCode config.
~/.config/opencode/opencode.json - 2
Add the server under mcp.
If the file already has servers, add only this one inside mcp. Put your own API key in place of the example.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"beehiiv": {
"type": "local",
"command": ["npx", "-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"enabled": true,
"environment": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
} - 3
Restart OpenCode.
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add beehiiv \
--command npx \
--arg -y \
--arg @thenavidm/beehiiv-mcp-cli@latest \
--env BEEHIIV_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor beehiiv --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add beehiiv --command npx --arg -y --arg @thenavidm/beehiiv-mcp-cli@latest --env BEEHIIV_API_KEY="YOUR_API_KEY" - 2
Check that it starts and lists its tools.
openclaw mcp doctor beehiiv --probe
- 1
Add it with a single command in a terminal.
Put your own API key in place of the example.
openclaw mcp add beehiiv \
--command npx \
--arg -y \
--arg @thenavidm/beehiiv-mcp-cli@latest \
--env BEEHIIV_API_KEY=YOUR_API_KEY - 2
Check that it starts and lists its tools.
openclaw mcp doctor beehiiv --probe
- 1
In the agent panel, click the … menu, then MCP Servers, Manage MCP Servers and View raw config.
- 2
Add the server to mcp_config.json.
If the file already has servers, add only this one inside mcpServers. Put your own API key in place of the example.
{
"mcpServers": {
"beehiiv": {
"command": "npx",
"args": ["-y", "@thenavidm/beehiiv-mcp-cli@latest"],
"env": {
"BEEHIIV_API_KEY": "YOUR_API_KEY"
}
}
}
}
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
beehiiv:
command: "npx"
args: ["-y", "@thenavidm/beehiiv-mcp-cli@latest"]
env:
BEEHIIV_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
%USERPROFILE%\.hermes\config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
beehiiv:
command: "npx"
args: ["-y", "@thenavidm/beehiiv-mcp-cli@latest"]
env:
BEEHIIV_API_KEY: "YOUR_API_KEY"
- 1
Open your Hermes config.
~/.hermes/config.yaml - 2
Add the server under mcp_servers.
If the file already has mcp_servers, add only this one under it. Put your own API key in place of the example.
mcp_servers:
beehiiv:
command: "npx"
args: ["-y", "@thenavidm/beehiiv-mcp-cli@latest"]
env:
BEEHIIV_API_KEY: "YOUR_API_KEY"
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.claude/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Claude Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.claude\skills\beehiiv" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\beehiiv-mcp-cli\SKILL.md" "$HOME\.claude\skills\beehiiv\" - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Claude Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Claude Code the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Claude Code what each command does and which ones ask first.
mkdir -p ~/.claude/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.claude/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Claude Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Claude Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.agents/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Codex to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.agents\skills\beehiiv" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\beehiiv-mcp-cli\SKILL.md" "$HOME\.agents\skills\beehiiv\" - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Codex to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Codex the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Codex what each command does and which ones ask first.
mkdir -p ~/.agents/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.agents/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Codex to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Codex finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Cursor to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Cursor to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Cursor to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Cursor finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask VS Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask VS Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask VS Code to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so VS Code finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.copilot/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Copilot CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.copilot\skills\beehiiv" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\beehiiv-mcp-cli\SKILL.md" "$HOME\.copilot\skills\beehiiv\" - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Copilot CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give Copilot CLI the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells Copilot CLI what each command does and which ones ask first.
mkdir -p ~/.copilot/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.copilot/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask Copilot CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Copilot CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Gemini CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Gemini CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Gemini CLI to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Gemini CLI finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.config/opencode/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenCode to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.config\opencode\skills\beehiiv" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\beehiiv-mcp-cli\SKILL.md" "$HOME\.config\opencode\skills\beehiiv\" - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenCode to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenCode the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenCode what each command does and which ones ask first.
mkdir -p ~/.config/opencode/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.config/opencode/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenCode to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenCode finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.openclaw/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenClaw to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
New-Item -ItemType Directory -Force "$HOME\.openclaw\skills\beehiiv" | Out-Null
Copy-Item "$(npm root -g)\@thenavidm\beehiiv-mcp-cli\SKILL.md" "$HOME\.openclaw\skills\beehiiv\" - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenClaw to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Give OpenClaw the skill, so it knows every command.
The skill is the SKILL.md in the package. It tells OpenClaw what each command does and which ones ask first.
mkdir -p ~/.openclaw/skills/beehiiv
cp "$(npm root -g)/@thenavidm/beehiiv-mcp-cli/SKILL.md" ~/.openclaw/skills/beehiiv/ - 3
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 4
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 5
Ask OpenClaw to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so OpenClaw finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Antigravity to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Antigravity to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Antigravity to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Antigravity finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Hermes to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Hermes to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
Ask Hermes to use beehiiv-cli.
Running beehiiv-cli on its own lists every command, so Hermes finds the one it needs.
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.zshrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
List every command, then try one.
beehiiv-cli
beehiiv-cli list-publications
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
setx BEEHIIV_API_KEY "YOUR_API_KEY" - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
List every command, then try one.
beehiiv-cli
beehiiv-cli list-publications
- 1
Install the CLI. It needs Node 22 or newer.
npm install -g @thenavidm/beehiiv-mcp-cli@latest - 2
Save your Beehiiv details, so every new session has them.
Put your own API key in place of the example.
echo 'export BEEHIIV_API_KEY=YOUR_API_KEY' >> ~/.bashrc - 3
Check your setup.
It names anything that's wrong and the fix.
beehiiv-cli doctor - 4
List every command, then try one.
beehiiv-cli
beehiiv-cli list-publications
Needs Node 22 or newer and a Beehiiv API key. Make one in a minute.
It's free and open source. If it saves you time, star it on GitHub, so more people find it.
This free Beehiiv MCP server and CLI gives your AI real access to your Beehiiv publications: posts, subscribers, lists, segments, automations, polls and referrals. It drafts and schedules posts, finds and updates subscribers, manages lists, segments and custom fields, reads post and poll results, and handles referral, tier and podcast settings.
It's one install with two ways in. Claude, Codex, Cursor or any other MCP app calls its 117 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.
In this guide, I'll show you:
- What the Beehiiv MCP server & CLI is, and what you can ask it
- How to install it and check that it works
- When to use the MCP server, and when the CLI
- Every tool, and how to keep your account safe
Every tool on this page comes from the server itself, and every cost was measured in Claude Code.
Key takeaways
What is the Beehiiv MCP server & CLI?
The Beehiiv MCP server & CLI is a free, open source program that lets AI agents work in your Beehiiv publications for you, in two ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.
You ask in plain language. Your AI picks the right tool, and the server makes the call to Beehiiv's own API.
The CLI is the same program as commands. beehiiv-cli list-posts runs the same code your AI runs when you ask for your latest posts, whether an agent like Claude Code runs it or you do.
In an AI OS, the layer that connects your AI to your context, your data and your tools, a server like this is how your AI reaches Beehiiv. My guide to building an AI operating system names Beehiiv among the tools it reaches, and here's how I use AI myself.
What can you ask it?
Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:
Try askingSummarize my last five posts and how each one did.
Draft next week's issue from these notes, and leave it as a draft.
Find jane@example.com and show me their tags and custom fields.
How many subscribers are in my VIP segment?
Send me a test email of my latest draft.
What did readers answer in the poll on my last post?
The second one shows why this is useful. Your AI writes the whole issue into a draft in Beehiiv, and sending stays your call.
It works well next to my Threads MCP server and Bluesky MCP server, so your AI can share each issue on Threads and post it to Bluesky in the same chat. Every server I've made is on my MCP servers page.
For your newsletter, my free beehiiv money calculator and email subject line generator help too. Beehiiv's free plan is one of the places to start that I cover in how to start a blog.
How to install the Beehiiv MCP server
Pick your app in the box at the top of this page. Each one is a single command or a pasted block, and they all run through npx, so there's nothing to install first.
Windsurf, Zed and Cline take the same server, though they don't have a tab in the box yet. Follow the box's Cursor tab, and put its block here instead:
| App | Where the block goes |
|---|---|
| Windsurf | In the Cascade panel, open the Actions menu (…) and choose Open MCP config file, then paste the block. |
| Cline | Click the MCP Servers icon in the Cline panel, open the Configure tab, click Configure MCP Servers, and paste the block. |
| Zed | Go to Settings, then AI, then MCP Servers, and choose Add Server, then Add Local Server. Enter the block's command, arguments and variables, and Zed saves them under context_servers. |
Watch out: Beehiiv shows a new API key only until you leave the page, and it may ask you to verify your identity with Stripe first. Copy the key before you go.
Set up your Beehiiv account
It takes a minute.
BEEHIIV_API_KEY in the command for your app, in place of the example.A key limited to some publications answers 404 for the others, as if they didn't exist.
Beehiiv limits requests by plan:
| Plan | Requests a minute |
|---|---|
| Free | 30 |
| Lite | 180 |
| Pro | 500 |
| Enterprise | 800 |
The server waits two seconds between requests by default, which suits the Free plan. On a bigger plan, set BEEHIIV_MIN_REQUEST_INTERVAL_MS lower.
If you build an app with Beehiiv's OAuth, save its tokens in a private JSON file and point BEEHIIV_TOKENS_FILE at it instead. The server refreshes the token in that file on its own.
Check that it works
Run the doctor with --network. It checks your settings, then reads the publications your key can see. It never sends email or changes a subscriber.
npx -y @thenavidm/beehiiv-mcp-cli doctor --networkWhen every line has a check mark, restart your app and ask it for your latest posts. A publication that answers 404 is outside the key's limits.
In Claude Code, /mcp also shows whether the Beehiiv server is connected. It's one of the Claude Code commands worth knowing.
Use the Beehiiv CLI
The CLI is the same 117 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.
Every tool name becomes a command with dashes, so list_posts runs as beehiiv-cli list-posts.
npm install -g @thenavidm/beehiiv-mcp-cli
beehiiv-cli
beehiiv-cli list-publications --limit 5
beehiiv-cli list-posts --publication-id YOUR_PUBLICATION_ID --limit 5
beehiiv-cli get-subscription-by-email --publication-id YOUR_PUBLICATION_ID --email jane@example.com
beehiiv-cli send-post-test --publication-id YOUR_PUBLICATION_ID --post-id YOUR_POST_ID --confirmThe bare beehiiv-cli lists every command, beehiiv-cli which <words> finds the command for a task, and beehiiv-cli <command> --help shows what a command takes. Anything that changes a post, a subscriber or your settings, or sends an email, needs --confirm, the terminal's version of your approval.
beehiiv-cli install <app> adds the server to Claude Code, Codex, Claude Desktop, Cursor, VS Code or Gemini CLI, in each app's own format.
These are the flags you'll use most:
| Flag | What it does |
|---|---|
--json | Prints JSON |
--compact | Prints the JSON on one line |
--select a,b.c | Keeps only those fields, and a dotted path goes deeper |
--agent | Machine mode: compact JSON, no prompts, and it never confirms anything |
--confirm | Lets a write that asks first go ahead |
--dry-run | Shows what a write would do, without doing it |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | It worked |
| 1 | Something unexpected went wrong |
| 2 | The command was typed wrong, or a write needed --confirm |
| 3 | It wasn't found |
| 4 | Beehiiv rejected the credentials |
| 5 | Beehiiv failed or couldn't be reached |
| 7 | You hit a rate limit, so wait and try again |
| 10 | Nothing is set up yet |
MCP server or CLI: which one?
Both are the same program with the same 117 tools. The difference is when your AI pays for them, in the tokens it reads.
- MCP server
- 138,000 tokens
- CLI
- Nothing
- MCP server
- 2,000 tokens
- CLI
- Nothing
- MCP server
- Nothing more, or in Claude Code the tools it picks
- CLI
- 1,400 tokens, once
- MCP server
- 2,760,000 tokens
- CLI
- 1,400 tokens
- MCP server
- Yes
- CLI
- No, there's no terminal there
- MCP server
- No
- CLI
- Yes
An app that loads every tool up front sends the full list with every message, whether you mention Beehiiv or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.
The CLI costs nothing until Beehiiv comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 70 tokens.
When the whole conversation is about Beehiiv, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.
How to spend less
In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.
Turn the server off when you aren't working on your newsletter. In Claude Code that's the /mcp panel, and every AI app has its own switch. BEEHIIV_READ_ONLY=1 cuts it to the 70 reading tools.
Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.
Every number here was measured on October 5, 2026 in Claude Code 2.1.286 with Claude Opus 5.5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.
Drafts, subscribers and automations
A new post is a draft unless you schedule it, and it takes a title plus either blocks or HTML, never both. Beehiiv answers right away with the post's ID and finishes building it in the background, so your AI reads the post again once Beehiiv says it's ready. HTML needs inline styles, because Beehiiv strips style tags.
send_post_test sends you a test email of a draft before anything goes to your readers.
Adding a subscription can do more than add a row. It can bring back someone who unsubscribed, send a welcome email, start automations or change their paid tier, depending on what you send. That's why every subscriber change asks first.
list_subscriptions and a few other lists can collect every page with --all-pages, up to 1,000 items by default and 10,000 at most.
Watch out: Webhooks need Beehiiv's Lite plan or higher. The server sets up the endpoint, and your own receiver checks each event with the signing secret from Beehiiv's dashboard.
Every Beehiiv tool
The tables below list all 117 tools, grouped by what they're for. Of these, 70 only read, and 47 change something in your Beehiiv workspace.
Posts, templates and polls
list_polls- What it does
- Lists polls.
- Kind
- Reads
get_poll- What it does
- Reads a poll.
- Kind
- Reads
polls_list_responses- What it does
- Lists poll responses.
- Kind
- Reads
create_post- What it does
- Creates a post, as a draft unless you schedule it.
- Kind
- Asks first
list_posts- What it does
- Lists posts.
- Kind
- Reads
update_post- What it does
- Updates a post.
- Kind
- Asks first
get_post- What it does
- Reads a post.
- Kind
- Reads
delete_post- What it does
- Deletes a post.
- Kind
- Asks first
get_post_aggregate_stats- What it does
- Reads stats across all your posts.
- Kind
- Reads
send_post_test- What it does
- Sends a test email of a post.
- Kind
- Asks first
preview_post- What it does
- Makes a post preview URL.
- Kind
- Reads
list_post_templates- What it does
- Lists your post templates.
- Kind
- Reads
create_post_template- What it does
- Creates a post template.
- Kind
- Asks first
post_templates_workspace_index- What it does
- Lists workspace post templates.
- Kind
- Reads
post_templates_workspace_create- What it does
- Creates a workspace post template.
- Kind
- Asks first
post_templates_workspace_show- What it does
- Reads a workspace post template.
- Kind
- Reads
get_post_template- What it does
- Reads a post template.
- Kind
- Reads
Subscribers
create_bulk_subscription- What it does
- Adds many subscribers in one request.
- Kind
- Asks first
list_bulk_subscription_updates- What it does
- Lists your bulk subscription updates.
- Kind
- Reads
get_bulk_subscription_update- What it does
- Reads one bulk subscription update.
- Kind
- Reads
replace_bulk_subscription_update- What it does
- Changes many subscriptions at once.
- Kind
- Asks first
update_bulk_subscription_update- What it does
- Changes some fields on many subscriptions at once.
- Kind
- Asks first
bulk_subscription_updates_put_status- What it does
- Changes the status of many subscriptions at once.
- Kind
- Asks first
bulk_subscription_updates_patch_status- What it does
- Changes the status of many subscriptions at once, field by field.
- Kind
- Asks first
create_subscription- What it does
- Adds a subscriber, which can send a welcome email or start automations.
- Kind
- Asks first
list_subscriptions- What it does
- Lists subscriptions.
- Kind
- Reads
list_complimentary_access- What it does
- Lists complimentary access.
- Kind
- Reads
get_complimentary_access- What it does
- Reads complimentary access.
- Kind
- Reads
get_subscription_by_email- What it does
- Reads a subscription by email.
- Kind
- Reads
update_subscription_by_email- What it does
- Updates a subscription by email.
- Kind
- Asks first
get_subscription- What it does
- Reads a subscription by ID.
- Kind
- Reads
update_subscription- What it does
- Updates a subscription by its ID.
- Kind
- Asks first
patch_subscription- What it does
- Changes some fields of a subscription by its ID.
- Kind
- Asks first
delete_subscription- What it does
- Deletes a subscription.
- Kind
- Asks first
add_tags- What it does
- Adds tags to a subscription.
- Kind
- Asks first
remove_tag- What it does
- Removes a subscription tag.
- Kind
- Asks first
Newsletter lists and segments
list_condition_sets- What it does
- Lists condition sets.
- Kind
- Reads
get_condition_set- What it does
- Reads a condition set.
- Kind
- Reads
list_newsletter_lists- What it does
- Lists newsletter lists.
- Kind
- Reads
create_newsletter_list- What it does
- Creates a newsletter list.
- Kind
- Asks first
get_newsletter_list- What it does
- Reads a newsletter list.
- Kind
- Reads
update_newsletter_list- What it does
- Updates a newsletter list.
- Kind
- Asks first
delete_newsletter_list- What it does
- Deletes a newsletter list.
- Kind
- Asks first
create_newsletter_list_subscription- What it does
- Creates a newsletter list subscription.
- Kind
- Asks first
list_newsletter_list_subscriptions- What it does
- Lists newsletter list subscriptions.
- Kind
- Reads
get_newsletter_list_subscription- What it does
- Reads a newsletter list subscription.
- Kind
- Reads
update_newsletter_list_subscription- What it does
- Updates a newsletter list subscription.
- Kind
- Asks first
newsletter_list_subscriptions_update_by_subscription_id- What it does
- Updates a newsletter list subscription by subscription ID.
- Kind
- Asks first
newsletter_list_subscriptions_create_import- What it does
- Imports subscribers into a newsletter list.
- Kind
- Asks first
newsletter_list_subscriptions_get_import- What it does
- Reads a newsletter list subscriber import.
- Kind
- Reads
create_segment- What it does
- Creates a segment.
- Kind
- Asks first
list_segments- What it does
- Lists segments.
- Kind
- Reads
get_segment- What it does
- Reads a segment.
- Kind
- Reads
delete_segment- What it does
- Deletes a segment.
- Kind
- Asks first
segments_recalculate- What it does
- Recalculates a segment.
- Kind
- Asks first
get_segment_subscribers- What it does
- Lists segment subscribers.
- Kind
- Reads
segments_expand_results- What it does
- Lists segment subscriber IDs.
- Kind
- Reads
Automations
add_subscriber_to_automation- What it does
- Starts a subscriber on an automation, which can email them.
- Kind
- Asks first
list_automation_journeys- What it does
- Lists automation journeys.
- Kind
- Reads
get_automation_journey- What it does
- Reads an automation journey.
- Kind
- Reads
list_automations- What it does
- Lists automations.
- Kind
- Reads
get_automation- What it does
- Reads an automation.
- Kind
- Reads
automations_list_emails- What it does
- Lists automation emails.
- Kind
- Reads
Custom and publication fields
create_custom_field- What it does
- Creates a custom field.
- Kind
- Asks first
list_custom_fields- What it does
- Lists custom fields.
- Kind
- Reads
get_custom_field- What it does
- Reads a custom field.
- Kind
- Reads
update_custom_field- What it does
- Updates a custom field.
- Kind
- Asks first
patch_custom_field- What it does
- Updates a custom field.
- Kind
- Asks first
delete_custom_field- What it does
- Deletes a custom field.
- Kind
- Asks first
list_publication_fields- What it does
- Lists publication fields.
- Kind
- Reads
create_publication_field- What it does
- Creates a publication field.
- Kind
- Asks first
get_publication_field- What it does
- Reads a publication field.
- Kind
- Reads
update_publication_field- What it does
- Updates a publication field.
- Kind
- Asks first
publication_fields_values_index- What it does
- Lists publication field values.
- Kind
- Reads
publication_fields_values_update- What it does
- Assigns publication field values.
- Kind
- Asks first
Referrals, tiers, ads and engagement
list_ad_network_offers- What it does
- Lists ad offers from Beehiiv's ad network.
- Kind
- Reads
create_ad_network_offer- What it does
- Accepts an ad offer.
- Kind
- Asks first
ad_network_offers_advertisements- What it does
- Reads ad offer advertisements.
- Kind
- Reads
list_ad_network_reports- What it does
- Lists ad network reports.
- Kind
- Reads
ad_network_reports_summary- What it does
- Reads an ad network report summary.
- Kind
- Reads
ad_network_reports_account_summary- What it does
- Reads an account ad network report summary.
- Kind
- Reads
list_advertisement_opportunities- What it does
- Lists advertising opportunities.
- Kind
- Reads
list_engagements- What it does
- Lists engagement stats for a publication.
- Kind
- Reads
get_referral_program- What it does
- Reads a referral program.
- Kind
- Reads
create_tier- What it does
- Creates a tier.
- Kind
- Asks first
list_tiers- What it does
- Lists tiers.
- Kind
- Reads
get_tier- What it does
- Reads a tier.
- Kind
- Reads
replace_tier- What it does
- Replaces a tier's details.
- Kind
- Asks first
update_tier- What it does
- Updates a tier.
- Kind
- Asks first
Podcasts
podcasts_list_podcasts- What it does
- Lists podcasts.
- Kind
- Reads
podcasts_get_podcast- What it does
- Reads a podcast.
- Kind
- Reads
podcasts_get_private_feed- What it does
- Reads a subscriber's private podcast feed.
- Kind
- Reads
podcasts_get_private_feed_by_email- What it does
- Reads a subscriber's private podcast feed, by their email.
- Kind
- Reads
podcasts_send_private_feed_email- What it does
- Emails a subscriber their private podcast feed.
- Kind
- Asks first
podcasts_send_private_feed_email_by_email- What it does
- Emails a subscriber their private podcast feed, by their email.
- Kind
- Asks first
podcasts_list_episodes- What it does
- Lists podcast episodes.
- Kind
- Reads
podcasts_get_episode- What it does
- Reads a podcast episode.
- Kind
- Reads
Webhooks, exports and data deletion
create_data_deletion- What it does
- Asks Beehiiv to delete someone's data across your workspace.
- Kind
- Asks first
list_data_deletion- What it does
- Lists data deletion requests.
- Kind
- Reads
get_data_deletion- What it does
- Reads a data deletion request.
- Kind
- Reads
list_exports- What it does
- Lists subscription exports.
- Kind
- Reads
create_export- What it does
- Creates a subscription export.
- Kind
- Asks first
get_export- What it does
- Reads a subscription export.
- Kind
- Reads
create_webhook- What it does
- Creates a webhook.
- Kind
- Asks first
list_webhooks- What it does
- Lists webhooks.
- Kind
- Reads
get_webhook- What it does
- Reads a webhook.
- Kind
- Reads
update_webhook- What it does
- Updates a webhook.
- Kind
- Asks first
delete_webhook- What it does
- Deletes a webhook.
- Kind
- Asks first
Publications, authors and your workspace
list_authors- What it does
- Lists authors.
- Kind
- Reads
get_author- What it does
- Reads an author.
- Kind
- Reads
identify_oauth_user- What it does
- Reads the user an OAuth token belongs to.
- Kind
- Reads
list_publications- What it does
- Lists publications.
- Kind
- Reads
get_publication- What it does
- Reads a publication.
- Kind
- Reads
workspaces_identify- What it does
- Reads the workspace your key belongs to.
- Kind
- Reads
workspaces_permissions- What it does
- Reads workspace permissions.
- Kind
- Reads
workspaces_publications_by_subscription_email- What it does
- Lists the publications an email address subscribes to.
- Kind
- Reads
list_accounts- What it does
- Lists the accounts you've set up, without their keys.
- Kind
- Reads
Is the Beehiiv MCP server safe?
Email can't be unsent, and your list is your business. So 47 tools ask first: every change to a post, subscriber, list, segment, field, tier or webhook, every email, and every export or data deletion. They're the ones marked "Asks first" in the tool tables above.
Reading posts, stats and subscribers never asks, because it changes nothing.
When your AI calls one of them, the call needs a yes first. Where you use it decides who gives it:
- Claude Code (2.1.246 and later) asks you before every call, in every one of its permission modes.
- An app that can show forms asks you in a form.
- Any other app takes your AI's
confirm: trueas the yes, so tell your AI to check with you first. - An agent with no person to ask needs
BEEHIIV_CONFIRM=model, so itsconfirm: truecounts in every app. - In a terminal, you add
--confirmto the command.
If the answer is no, nothing reaches Beehiiv.
Make it read-only
Set BEEHIIV_READ_ONLY=1 and every tool that asks first disappears from the tool list, leaving 70 reading tools.
Keep a log of every write
Set BEEHIIV_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked, with what it was about to do and who approved it.
Watch out: Replies, poll answers and subscriber fields are written by other people, and one can try to give your AI orders. Treat them as data, and use BEEHIIV_READ_ONLY=1 for an agent working on its own.
Your data
Your requests go straight to Beehiiv, with no server of ours in between and no tracking. Your key stays in your app's config or your shell, and OAuth tokens stay in your private tokens file.
Subscribers' emails and custom fields are personal data, so keep exports private.
To cut access, delete the key under Settings, then API, and remove the server from your app's config.
Connect more than one Beehiiv account
Set BEEHIIV_ACCOUNTS to a JSON list with a name and an API key or OAuth tokens file for each account, and BEEHIIV_DEFAULT_ACCOUNT to the one that acts when a tool names none. Every tool takes an optional account.
The account picks the key, and the publication ID picks the publication inside it, so one key can still reach several publications.
Beehiiv MCP server settings
Every setting is an environment variable, in your app's config or your shell.
BEEHIIV_API_KEY- Default
- none
- What it does
- Holds your API key
BEEHIIV_ACCESS_TOKEN- Default
- none
- What it does
- Holds an OAuth access token, instead
BEEHIIV_TOKENS_FILE- Default
- none
- What it does
- Points at a private JSON file with your OAuth tokens, which the server refreshes
BEEHIIV_CLIENT_ID- Default
- none
- What it does
- Holds your OAuth app's client ID, for refreshing
BEEHIIV_CLIENT_SECRET- Default
- none
- What it does
- Holds your OAuth app's client secret, for refreshing
BEEHIIV_REFRESH_TOKEN- Default
- none
- What it does
- Holds the OAuth refresh token
BEEHIIV_ACCOUNTS- Default
- none
- What it does
- Lists several accounts, as JSON
BEEHIIV_DEFAULT_ACCOUNT- Default
- the first one
- What it does
- Picks the account that acts when a tool names none
BEEHIIV_REQUEST_TIMEOUT_MS- Default
30000- What it does
- Gives up on a Beehiiv request after this many milliseconds
BEEHIIV_MAX_RETRIES- Default
2- What it does
- Retries a rate-limited read this many times, and never a write
BEEHIIV_MIN_REQUEST_INTERVAL_MS- Default
2000- What it does
- Waits this many milliseconds between requests
BEEHIIV_READ_ONLY- Default
- off
- What it does
1hides every tool that changes something
BEEHIIV_ALLOW_DESTRUCTIVE- Default
- on
- What it does
0refuses the tools that ask first
BEEHIIV_AUDIT_LOG- Default
- none
- What it does
- Names a file that gets one line per attempted write
BEEHIIV_SURFACE- Default
full- What it does
searchlists three tools that find, describe and run the rest
BEEHIIV_TOOL_TIMEOUT_MS- Default
- none
- What it does
- Gives up on any tool after this many milliseconds
BEEHIIV_CONFIRM- Default
human- What it does
modellets your AI'sconfirm: trueapprove on its own, for an agent with no person to ask
BEEHIIV_HTTP_PORT- Default
8787- What it does
- Sets the port for
--http
BEEHIIV_HTTP_HOST- Default
127.0.0.1- What it does
- Sets the address for
--http, and any other needs a token
BEEHIIV_HTTP_TOKEN- Default
- none
- What it does
- Sets the bearer token every
--httprequest needs
BEEHIIV_HTTP_ALLOWED_ORIGINS- Default
- none
- What it does
- Lists other websites allowed to call
--http, comma separated
BEEHIIV_DEBUG- Default
- off
- What it does
1prints debug lines
Troubleshooting
Run the doctor first. It names the step that failed and the fix.
| What you see | What to do |
|---|---|
| A publication answers 404 | It doesn't exist, or your key is limited to other publications |
| Creating a post is refused | It needs the Pro or Enterprise plan, a title, and either blocks or HTML, not both |
| A new post says it's pending | Beehiiv is still building it. Wait as it says, then read it again, and don't create it twice |
| A 403 error | Your plan, the key's limits or your role doesn't allow that tool |
| A 429 error | You're over your plan's requests a minute. Wait, and never resend a change you haven't checked |
| Only the first page came back | Add --all-pages where the tool offers it, which stops at 1,000 items unless you set more |
| "…so it will not run without confirm: true" | That's the safety check working. Approve it when your app asks |
If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.
More free tools for your newsletter
Run your newsletter in Kit or Substack too, with the same kind of tools.
Free tools
FAQs about the Beehiiv MCP server & CLI
Here are the questions people ask most about the Beehiiv MCP server and CLI.
The Beehiiv MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor work in your Beehiiv publications.
It has 117 tools for posts, subscribers, lists, segments, automations, polls, referrals and podcasts, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.
An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.
MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.
Every server I've made is on my MCP servers page.
The Beehiiv CLI is the same program as the Beehiiv MCP server, run as commands.
AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.
One npm package installs both.
Use the Beehiiv MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.
In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.
Yes, the Beehiiv MCP server is free and open source under the AGPL-3.0-or-later license.
Beehiiv's API works on every plan, though creating posts needs Pro or Enterprise.
Beehiiv's API works on every plan, with 30 requests a minute on Free.
Creating posts needs Pro or Enterprise, and webhooks need Lite or higher.
No, a new post is a draft unless you schedule it, and scheduling asks first.
You can send yourself a test email of the draft before anything goes out.
Yes, it can.
Depending on what you send, it can bring back someone who unsubscribed, send a welcome email or start automations, so it asks first.
Yes, when you create or edit a key in Beehiiv, you can limit it to certain publications.
The others answer 404, as if they didn't exist.
To disconnect the Beehiiv MCP server, delete its key under Settings, then API, which cuts access right away.
Then remove the server from your AI app's config.
The Beehiiv MCP server works with any app that speaks MCP.
That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, Windsurf, Zed, Cline, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.
I did.
I'm Navid Moazzez, and I made the Beehiiv MCP server & CLI as one of my free tools on navid.me.
You can read more about me.
The code is on GitHub under the AGPL-3.0-or-later license, and the package is on npm.
More MCP servers & CLIs
Related free tools
Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Read the affiliate disclaimer.
On this page
The most actionable AI newsletter for founders
Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.
No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.
P.S. Sign up now to get free access to my ultimate AI tools guide for creators.
