Beehiiv MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BEEHIIV_API_KEY | No | Private personal API key. | |
| BEEHIIV_ACCOUNTS | No | Private JSON named accounts; replaces single-account variables. Supported keys are name, api_key, access_token, refresh_token, client_id, client_secret and tokens_file. | |
| BEEHIIV_AUDIT_LOG | No | Private write-guard decision log. | |
| BEEHIIV_CLIENT_ID | No | Your registered OAuth client ID. | |
| BEEHIIV_READ_ONLY | No | Hide/refuse all writes when 1 or true. | 0 |
| BEEHIIV_MAX_RETRIES | No | GET 429 retry count, 0–5. | 2 |
| BEEHIIV_TOKENS_FILE | No | Absolute regular private OAuth JSON, max 64 KB. | |
| BEEHIIV_ACCESS_TOKEN | No | Authorized OAuth access token. | |
| BEEHIIV_CLIENT_SECRET | No | Confidential-client secret; omit for public clients. | |
| BEEHIIV_REFRESH_TOKEN | No | OAuth refresh token. | |
| BEEHIIV_DEFAULT_ACCOUNT | No | Default private account label. | First configured account |
| BEEHIIV_ALLOW_DESTRUCTIVE | No | Block all writes when 0 or false. | 1 |
| BEEHIIV_REQUEST_TIMEOUT_MS | No | Integer per-request deadline, 100–300000 ms. | 30000 |
| BEEHIIV_MIN_REQUEST_INTERVAL_MS | No | 0 selects conservative pacing (2000 ms); otherwise 1–10000 ms. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_ad_network_offersC | Get ad offers. Reads account data. OAuth integrations require posts:read. |
| create_ad_network_offerA | Accept ad offer. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. |
| ad_network_offers_advertisementsB | Get ad offer advertisements. Reads account data. OAuth integrations require posts:read. |
| list_ad_network_reportsA | Get ad network reports. Reads account data. OAuth integrations require posts:read. |
| ad_network_reports_summaryC | Get ad network report summary. Reads account data. OAuth integrations require posts:read. |
| ad_network_reports_account_summaryB | Get account ad network report summary. Reads account data. OAuth integrations require posts:read. |
| list_advertisement_opportunitiesB | Get advertisement opportunities. Reads account data. OAuth integrations require posts:read. |
| list_authorsB | List authors. Reads account data. |
| get_authorC | Get author. Reads account data. |
| add_subscriber_to_automationA | Add subscription to an automation. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require automations:write. |
| list_automation_journeysA | List automation journeys. Reads account data. OAuth integrations require automations:read. |
| get_automation_journeyB | Get automation journey. Reads account data. OAuth integrations require automations:read. |
| list_automationsA | List automations. Reads account data. OAuth integrations require automations:read. |
| get_automationC | Get automation. Reads account data. OAuth integrations require automations:read. |
| automations_list_emailsC | List automation emails. Reads account data. |
| create_bulk_subscriptionB | Bulk create subscription. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| list_bulk_subscription_updatesB | List subscription updates. Reads account data. OAuth integrations require subscriptions:read. |
| get_bulk_subscription_updateC | Get subscription update. Reads account data. OAuth integrations require subscriptions:read. |
| replace_bulk_subscription_updateB | Update subscriptions. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| update_bulk_subscription_updateC | Update subscriptions. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| bulk_subscription_updates_put_statusB | Update subscriptions' status. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| bulk_subscription_updates_patch_statusA | Update subscriptions' status. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| create_subscriptionB | Create subscription. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| list_subscriptionsB | List subscriptions. Reads account data. OAuth integrations require subscriptions:read. |
| list_complimentary_accessB | List complimentary access. Reads account data. OAuth integrations require complimentary_access:read. |
| get_complimentary_accessC | Get complimentary access. Reads account data. OAuth integrations require complimentary_access:read. |
| list_condition_setsA | List condition sets. Reads account data. OAuth integrations require condition_sets:read. |
| get_condition_setC | Get condition set. Reads account data. OAuth integrations require condition_sets:read. |
| create_custom_fieldB | Create custom field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require custom_fields:write. |
| list_custom_fieldsA | List custom fields. Reads account data. OAuth integrations require custom_fields:read. |
| get_custom_fieldB | Get custom field. Reads account data. OAuth integrations require custom_fields:read. |
| update_custom_fieldB | Update custom field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require custom_fields:write. |
| patch_custom_fieldA | Update custom field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require custom_fields:write. |
| delete_custom_fieldA | Delete custom field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require custom_fields:write. |
| create_data_deletionA | Create data deletion request. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require data_deletion:write. |
| list_data_deletionA | List data deletion requests. Reads account data. OAuth integrations require data_deletion:read. |
| get_data_deletionB | Get data deletion request. Reads account data. OAuth integrations require data_deletion:read. |
| list_engagementsC | Get publication engagements. Reads account data. OAuth integrations require publications:read. |
| list_exportsB | List subscription exports. Reads account data. OAuth integrations require subscriptions:read. |
| create_exportB | Create subscription export. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| get_exportB | Get subscription export. Reads account data. OAuth integrations require subscriptions:read. |
| list_newsletter_listsB | List newsletter lists. Reads account data. OAuth integrations require newsletter_lists:read. |
| create_newsletter_listA | Create newsletter list. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| get_newsletter_listB | Get newsletter list. Reads account data. OAuth integrations require newsletter_lists:read. |
| update_newsletter_listB | Update newsletter list. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| delete_newsletter_listA | Delete newsletter list. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| create_newsletter_list_subscriptionA | Create newsletter list subscription. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| list_newsletter_list_subscriptionsA | List newsletter list subscriptions. Reads account data. OAuth integrations require newsletter_lists:read. |
| get_newsletter_list_subscriptionB | Get newsletter list subscription. Reads account data. OAuth integrations require newsletter_lists:read. |
| update_newsletter_list_subscriptionB | Update newsletter list subscription. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| newsletter_list_subscriptions_update_by_subscription_idA | Update newsletter list subscription by subscription ID. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| newsletter_list_subscriptions_create_importA | Create newsletter list subscriber import. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require newsletter_lists:write. |
| newsletter_list_subscriptions_get_importB | Get newsletter list subscriber import. Reads account data. OAuth integrations require newsletter_lists:read. |
| identify_oauth_userB | Identify user. Reads account data. OAuth integrations require identify:read. OAuth access token required; API key identity is not this endpoint. |
| podcasts_list_podcastsA | List podcasts. Reads account data. OAuth integrations require podcasts:read. |
| podcasts_get_podcastB | Get podcast. Reads account data. OAuth integrations require podcasts:read. |
| podcasts_get_private_feedC | Get private feed. Reads account data. OAuth integrations require podcasts:read. |
| podcasts_get_private_feed_by_emailA | Get private feed by email. Reads account data. OAuth integrations require podcasts:read. |
| podcasts_send_private_feed_emailA | Send private feed email. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require podcasts:write. |
| podcasts_send_private_feed_email_by_emailA | Send private feed email by email. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require podcasts:write. |
| podcasts_list_episodesB | List podcast episodes. Reads account data. OAuth integrations require podcasts:read. |
| podcasts_get_episodeB | Get podcast episode. Reads account data. OAuth integrations require podcasts:read. |
| list_pollsB | List polls. Reads account data. OAuth integrations require polls:read. |
| get_pollC | Get poll. Reads account data. OAuth integrations require polls:read. |
| polls_list_responsesB | List poll responses. Reads account data. OAuth integrations require polls:read. |
| create_postA | Create post. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. Defaults to draft. Creation is asynchronous; inspect the existing post ID before repeating a write. |
| list_postsC | List posts. Reads account data. OAuth integrations require posts:read. |
| update_postC | Update post. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. |
| get_postC | Get post. Reads account data. OAuth integrations require posts:read. |
| delete_postA | Delete post. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. |
| get_post_aggregate_statsB | Get aggregate stats. Reads account data. OAuth integrations require posts:read. |
| send_post_testB | Send test email. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts. |
| preview_postB | Generate post preview URL. Reads account data. OAuth integrations require posts:read. |
| list_post_templatesA | Get post templates. Reads account data. OAuth integrations require posts:read. |
| create_post_templateC | Create post template. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. |
| post_templates_workspace_indexB | List workspace post templates. Reads account data. OAuth integrations require posts:read. |
| post_templates_workspace_createB | Create workspace post template. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require posts:write. |
| post_templates_workspace_showB | Get workspace post template. Reads account data. OAuth integrations require posts:read. |
| get_post_templateB | Get post template. Reads account data. OAuth integrations require posts:read. |
| list_publication_fieldsB | List publication fields. Reads account data. OAuth integrations require publication_fields:read. |
| create_publication_fieldA | Create publication field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require publication_fields:write. |
| get_publication_fieldC | Get publication field. Reads account data. OAuth integrations require publication_fields:read. |
| update_publication_fieldB | Update publication field. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require publication_fields:write. |
| publication_fields_values_indexC | List publication field values. Reads account data. OAuth integrations require publication_fields:read. |
| publication_fields_values_updateA | Assign publication field values. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require publication_fields:write. |
| list_publicationsB | List publications. Reads account data. OAuth integrations require publications:read. |
| get_publicationB | Get publication. Reads account data. OAuth integrations require publications:read. |
| get_referral_programB | Get referral program. Reads account data. OAuth integrations require referral_program:read. |
| create_segmentC | Create segment. Changes account state and requires confirm=true for the user-requested action. |
| list_segmentsA | List segments. Reads account data. OAuth integrations require segments:read. |
| get_segmentC | Get segment. Reads account data. OAuth integrations require segments:read. |
| delete_segmentA | Delete segment. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require segments:write. |
| segments_recalculateB | Recalculate segment. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require segments:write. |
| get_segment_subscribersB | List segment subscribers. Reads account data. OAuth integrations require segments:read. |
| segments_expand_resultsB | List segment subscriber IDs. Reads account data. OAuth integrations require segments:read. |
| get_subscription_by_emailC | Get subscription by email. Reads account data. OAuth integrations require subscriptions:read. |
| update_subscription_by_emailA | Update subscription by email. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| get_subscriptionA | Get subscription by ID. Reads account data. OAuth integrations require subscriptions:read. |
| update_subscriptionA | Update subscription by ID. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| patch_subscriptionA | Update subscription by ID. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| delete_subscriptionA | Delete subscription. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| add_tagsB | Add subscription tag. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| remove_tagA | Remove subscription tag. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require subscriptions:write. |
| create_tierA | Create a tier. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require tiers:write. |
| list_tiersB | List tiers. Reads account data. OAuth integrations require tiers:read. |
| get_tierC | Get tier. Reads account data. OAuth integrations require tiers:read. |
| replace_tierB | Update a tier. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require tiers:write. |
| update_tierB | Update a tier. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require tiers:write. |
| create_webhookA | Create a webhook. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require webhooks:write. |
| list_webhooksA | List webhooks. Reads account data. OAuth integrations require webhooks:read. |
| get_webhookB | Get webhook. Reads account data. OAuth integrations require webhooks:read. |
| update_webhookC | Update webhook. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require webhooks:write. |
| delete_webhookA | Delete a webhook. Changes account state and requires confirm=true for the user-requested action. OAuth integrations require webhooks:write. |
| workspaces_identifyB | Identify workspace. Reads account data. OAuth integrations require identify:read. |
| workspaces_permissionsB | Get workspace permissions. Reads account data. OAuth integrations require identify:read. |
| workspaces_publications_by_subscription_emailB | Get publications by subscription email. Reads account data. OAuth integrations require publications:read. |
| list_accountsA | List private account labels and configured auth methods, without returning credentials or token-file paths. Does not contact Beehiiv. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 117 tools
Many tools have overlapping or identical purposes, e.g. update_subscription and patch_subscription both say 'Update subscription by ID', replace_tier and update_tier both say 'Update a tier', and several bulk_subscription_updates tools perform the same bulk status update. An agent cannot reliably distinguish which tool to use for a given operation.
Mostly snake_case, but conventions vary widely: simple verb_noun (create_post, list_posts), namespace-prefixed resource_action (podcasts_list_episodes, automations_list_emails), odd orderings (post_templates_workspace_show, ad_network_offers_advertisements), and HTTP-method names (bulk_subscription_updates_put_status, patch_status). The set mixes predictable CRUD verbs with opaque API-derived naming.
117 tools is an extreme mismatch for a single MCP server and suggests exposing the entire Beehiiv API surface rather than a coherent, well-scoped set. Many of these tools are redundant variants of the same operation.
The surface covers most Beehiiv resources—subscriptions, posts, tiers, webhooks, segments, automations, podcasts, polls, ad network, publications, and more—with broad CRUD coverage. A few lifecycle gaps remain (e.g., no delete for tiers or publication fields), but agents can generally work around them.