Skip to main content
Glama

Content Calendar

get_calendar
Read-onlyIdempotent

Lists the account's posts on X (Twitter), LinkedIn and Threads: scheduled, ready and draft posts, and published or archived posts when a filter asks for them. Without date filters it returns upcoming and undated posts (scheduled from today onward plus dateless drafts); start_date/end_date or statuses: ['published'] return history. Supports compound filters (platforms[], statuses[]), a campaign filter, and cursor pagination via next_cursor. The legacy platform and status (singular) fields still work and combine with the array forms. Archived posts are left out unless a filter asks for them (statuses: ['archived']). summary counts every post matching the filters; when a count cannot be read it covers this page only and counts.scope says 'page'. page says how many posts this response holds and whether more follow. Times: server_now and timezone say what time it is for the founder; each post has scheduled_local beside the UTC scheduled_time, and date ('today', 'tomorrow' or YYYY-MM-DD) filters one day in the founder's timezone. posts is the one list; days[] gives each founder-local date with its post_ids. A published post carries published_at and published_url; a failed or held publish carries publish_error.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_calendar"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateNoOne day in the founder's timezone (the response's `timezone`): "today", "tomorrow" or YYYY-MM-DD. Returns the posts scheduled on that local day. Sent instead of start_date/end_date, never with them.
limitNoMax posts to return (default 50, max 200).
cursorNoOpaque cursor returned as next_cursor on the previous page.
statusNoSingle status filter (legacy aliases pending_approval and approved remain accepted; the array form is statuses[]).
end_dateNoReturns posts up to this date.
platformNoSingle platform filter (legacy; the array form is platforms[]).
statusesNoLimits results to these canonical lifecycle statuses. Legacy aliases remain accepted.
platformsNoLimits results to one or more platforms.
start_dateNoReturns posts from this date on.
campaign_idNoLimits results to posts in this campaign.
response_formatNoconcise (default) returns previews; detailed returns full content + metadata.

Output Schema

NameRequiredDescriptionDefault
daysYes
kindYes
pageNo
yearYes
monthYes
postsNo
countsNo
summaryNo
timezoneNo
date_rangeNo
server_nowNo
next_cursorNo
response_formatNo
timezone_sourceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent annotations: it discloses the default result window, that archived posts are hidden unless requested, that summary may fall back to a page-only count with counts.scope telling which, and that published posts carry published_at/published_url while failures carry publish_error. That is exactly the behavioral context annotations cannot express.

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?

Front-loaded with purpose and default scope, and most sentences carry real information. The tail portion explaining posts, days[], page and summary is largely redundant with the existing output schema and makes the block longer than necessary.

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?

For an 11-parameter, filter-heavy read tool this covers default semantics, filter combinations, legacy aliases, pagination, timezone handling and counting caveats. An agent could call it correctly without consulting anything else.

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 already 100%, but the description still adds cross-field rules: date is sent instead of start_date/end_date and never with them, and the legacy singular platform/status combine with the array forms. These interaction constraints are the kind of meaning the schema alone does not convey.

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

Purpose4/5

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

Opens with a specific verb and resource ('Lists the account's posts on X, LinkedIn and Threads') and enumerates the lifecycle states covered, so the scope is immediately legible. It does not differentiate itself from the sibling search_posts, which is the one plausible confusion for an agent choosing a list tool.

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

Usage Guidelines4/5

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

Explicitly states the default behavior ('Without date filters it returns upcoming and undated posts') and the conditions that switch to history (start_date/end_date or statuses: ['published']), plus the archive exclusion rule. Strong when-to-use guidance, but it never names an alternative tool or says when a different sibling is the better choice.

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