Skip to main content
Glama
thenavidm
by thenavidm

List posts

list_posts
Read-onlyIdempotent

Retrieve posts from a Beehiiv publication, with filters for status, author, audience, platform, and tags. Supports pagination and expansion for detailed data.

Instructions

List posts. Reads account data. OAuth integrations require posts:read.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoPagination returns the results in pages. Each page contains the number of results specified by the `limit` (default: 10). If not specified, results 1-10 from page 1 will be returned.
limitNoA limit on the number of objects to be returned. The limit can range between 1 and 100, and the default is 10.
slugsNoOptionally filter posts by their slugs. Adding a slug will return any post with that exact slug associated to it. Example: Filtering for `slugs: ["my-first-post","another-post"]` will return results of posts that have *either* `my-first-post` or `another-post` as their slug.
expandNoOptionally expand the results by adding additional information. `stats` - Adds statistics about the post(s). `free_web_content` - Adds the web HTML rendered to a free reader. `free_email_content` - Adds the email HTML rendered to a free reader. `free_rss_content` - Adds the RSS feed HTML. `premium_web_content` - Adds the web HTML rendered to a premium reader. `premium_email_content` - Adds the email HTML rendered to a premium reader.
statusNoOptionally filter the results by the status of the post. `draft` - not been scheduled. `confirmed` - The post will be active after the `scheduled_at`. `archived` - The post is no longer active. `all` - Does not restrict results by status.all
accountNoNamed private account from BEEHIIV_ACCOUNTS. Defaults to BEEHIIV_DEFAULT_ACCOUNT or the first configured account.
authorsNoOptionally filter posts by their authors. Adding an author name will return any post with that author associated to it (case-insensitive). Example: Filtering for `authors: ["John Doe","Jane Smith"]` will return results of posts that have *either* John Doe or Jane Smith as authors.
audienceNoOptionally filter the results by audienceall
order_byNoThe field that the results are sorted by. Defaults to created `created` - The time in which the post was first created. `publish_date` - The time the post was set to be published. `displayed_date` - The time displayed in place of the `publish_date`. If no `displayed_date` was set, it will default to the `publish_date`created
platformNoOptionally filter the results by platform. `web` - Posts only published to web. `email` - Posts only published to email. `both` - Posts published to email and web. `all` - Does not restrict results by platform.all
directionNoThe direction that the results are sorted in. Defaults to asc `asc` - Ascending, sorts from smallest to largest. `desc` - Descending, sorts from largest to smallest.asc
content_tagsNoOptionally filter posts by content_tags. Adding a content tag will return any post with that content tag associated to it. Example : Filtering for `content_tags: ["sales","closing"]` will return results of posts that have *either* `sales` or `closing` content_tags.
premium_tiersNoOptionally filter posts by audience based on premium tiers. This takes in an array of Display Names of the premium tiers. It will also scope any expanded content output to the specified premium tiers. Note: This is case insensitive.
publication_idYesThe prefixed ID of the publication object
hidden_from_feedNoOptionally filter the results by the `hidden_from_feed` attribute of the post. `all` - Does not restrict results by `hidden_from_feed`. `true` - Only return posts hidden from the feed. `false` - Only return posts that are visible on the feed.all

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a genuinely useful behavioral detail beyond the annotations: the required OAuth scope "posts:read" for integrations. However, it says nothing about pagination behavior, result caps, or what "account data" means in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the operation and followed by the auth constraint; nothing is padded or redundant. It is efficient, though its brevity comes at the cost of substance rather than being a model of compact completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter, filter-heavy list endpoint with no output schema, the description omits what a returned post contains, how pagination behaves at a high level, and why the required publication_id scopes the call. The schema covers the inputs, but the overall picture an agent needs is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 15 parameters including filters, pagination, ordering, and expand fields are fully documented in the schema itself. The description contributes no parameter meaning, which is the expected baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List posts" states a clear verb and resource, but it is essentially a restatement of the tool name and title, adding no scope or differentiation from siblings like list_post_templates or get_post. An agent learns nothing about what kind of posts are returned or how this differs from other list endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no alternatives (e.g., get_post for a single post), and no prerequisites beyond the OAuth scope note. The auth note is useful but is not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools