Skip to main content
Glama

List Posts

list_posts
Read-only

List posts in the workspace (the current one unless workspaceId names another), any status, newest first by default. Returns { posts, total, hasMore }; each post carries its status and a platforms array with per-platform status. Filters: statuses, platforms (posts targeting any of them), and startDate/endDate, which bound scheduledAt, or createdAt for posts never scheduled. limit is 1 to 100 (default 20); page with offset while hasMore is true. Use this to find post ids or check what is already queued. Use get_post for one post's full record and list_post_results for one post's per-platform outcomes and retry ids.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, 1 to 100
offsetNoPosts to skip; increase by limit while hasMore is true
endDateNoUpper bound (ISO 8601, e.g. "2026-03-31") on scheduledAt, or createdAt for posts never scheduled
statusesNoFilter by status (e.g. ["SCHEDULED", "DRAFT"]); omit for all statuses
platformsNoFilter to posts targeting any of these platforms
sortOrderNoNEWEST (default) or OLDEST
startDateNoLower bound (ISO 8601, e.g. "2026-03-01") on scheduledAt, or createdAt for posts never scheduled
workspaceIdNoWorkspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultNoAn object with posts (each with id, status, contentType, text, scheduledAt, timezone, recurringPostId and occurrenceAt for occurrences of a recurring post, and platforms with per-platform status), total (count of all matches), and hasMore.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. Changed6 schema fields changed
    • addedInput schema / properties / limit / maximum
      Added value: +100
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / offset / minimum
      Added value: +0
    • changedInput schema / properties / offset / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / workspaceId / description
      Previous value: -"Workspace to act in: an id from list_workspaces. Omit to use the default workspace. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another"New value: +"Workspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another"
  3. Changed1 schema field changed
    • addedInput schema / properties / workspaceId
      Added value: +{
      +  "description": "Workspace to act in: an id from list_workspaces. Omit to use the default workspace. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / properties / result / description
      Previous value: -"An object with posts (each with id, status, contentType, text, scheduledAt, timezone, and platforms with per-platform status), total (count of all matches), and hasMore."New value: +"An object with posts (each with id, status, contentType, text, scheduledAt, timezone, recurringPostId and occurrenceAt for occurrences of a recurring post, and platforms with per-platform status), total (count of all matches), and hasMore."
  5. Changed1 schema field changed
    • changedInput schema / properties / platforms / items / enum
      Previous value: -[
      -  "LINKEDIN",
      -  "YOUTUBE",
      -  "INSTAGRAM",
      -  "FACEBOOK",
      -  "TIKTOK",
      -  "PINTEREST",
      -  "THREADS",
      -  "BLUESKY",
      -  "TWITTER"
      -]New value: +[
      +  "LINKEDIN",
      +  "YOUTUBE",
      +  "INSTAGRAM",
      +  "FACEBOOK",
      +  "TIKTOK",
      +  "PINTEREST",
      +  "THREADS",
      +  "BLUESKY",
      +  "TWITTER",
      +  "MASTODON"
      +]
  6. Changed8 schema fields changed
    • changedInput schema / properties / endDate / description
      Previous value: -"End date (ISO 8601)"New value: +"Upper bound (ISO 8601, e.g. \"2026-03-31\") on scheduledAt, or createdAt for posts never scheduled"
    • changedInput schema / properties / limit / description
      Previous value: -"Max results"New value: +"Max results, 1 to 100"
    • changedInput schema / properties / offset / description
      Previous value: -"Pagination offset"New value: +"Posts to skip; increase by limit while hasMore is true"
    • changedInput schema / properties / platforms / description
      Previous value: -"Filter by platform"New value: +"Filter to posts targeting any of these platforms"
    • changedInput schema / properties / sortOrder / description
      Previous value: -"NEWEST or OLDEST"New value: +"NEWEST (default) or OLDEST"
    • changedInput schema / properties / startDate / description
      Previous value: -"Start date (ISO 8601)"New value: +"Lower bound (ISO 8601, e.g. \"2026-03-01\") on scheduledAt, or createdAt for posts never scheduled"
    • changedInput schema / properties / statuses / description
      Previous value: -"Filter by status (e.g. [\"SCHEDULED\", \"DRAFT\"])"New value: +"Filter by status (e.g. [\"SCHEDULED\", \"DRAFT\"]); omit for all statuses"
    • changedOutput schema / properties / result / description
      Previous value: -"The matching posts with their ids, statuses, platforms, and schedule times as returned by the AdaptlyPost API."New value: +"An object with posts (each with id, status, contentType, text, scheduledAt, timezone, and platforms with per-platform status), total (count of all matches), and hasMore."
  7. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description still adds real operational context: default sort order, pagination workflow tied to hasMore, and the non-obvious rule that startDate/endDate bound scheduledAt but fall back to createdAt for never-scheduled posts. It does not cover rate limits or workspace-access caveats beyond the workspaceId note.

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

Conciseness5/5

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

Front-loads purpose and scope, then return shape, then filters, then routing to siblings. Every clause carries distinct information (pagination, filter-bound semantics, alternatives) with no filler or restated marketing prose.

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

Completeness5/5

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

With an output schema present the description need not explain the payload in depth, yet it still summarizes { posts, total, hasMore } and per-platform status shape. Combined with filter semantics, pagination rules, and sibling routing, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds matching semantics not stated per-parameter: platforms is an OR match ('posts targeting any of them') and the date filters bound scheduledAt with a createdAt fallback. It also ties offset to the returned hasMore flag, which is a behavioral tie the schema alone does not express.

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

Purpose5/5

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

States a specific verb and resource with scope ('posts in the workspace, the current one unless workspaceId names another'), default ordering, and default status breadth. It explicitly contrasts itself with get_post and list_post_results, so an agent can distinguish it from siblings without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('find post ids or check what is already queued') and names both alternatives with the condition that selects each (get_post for one full record, list_post_results for per-platform outcomes and retry ids). Nothing is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources