Skip to main content
Glama

Get Content Calendar

get_content_calendar
Read-only

View scheduled content for upcoming days to manage distribution timelines and plan content strategy effectively.

Instructions

View the content calendar/queue. Shows all scheduled content for the next N days.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
days_aheadNoNumber of days to look ahead (1-30)

Implementation Reference

  • The handler function for get_content_calendar, which reads the queue and returns upcoming content scheduled within a specified range.
    async ({ days_ahead }) => {
      const queue = readQueue();
      const today = new Date();
      const cutoff = new Date(today);
      cutoff.setDate(cutoff.getDate() + days_ahead);
    
      const todayStr = today.toISOString().split("T")[0];
      const cutoffStr = cutoff.toISOString().split("T")[0];
    
      const upcoming = queue
        .filter((item) => {
          return item.scheduled_date >= todayStr! && item.scheduled_date <= cutoffStr!;
        })
        .sort((a, b) => {
          const dateCompare = a.scheduled_date.localeCompare(b.scheduled_date);
          if (dateCompare !== 0) return dateCompare;
          return a.scheduled_time.localeCompare(b.scheduled_time);
        });
    
      if (upcoming.length === 0) {
        return {
          content: [{
            type: "text" as const,
            text: `Aucun contenu planifie pour les ${days_ahead} prochains jours.\n\nUtilise schedule_content pour ajouter du contenu a la file.`,
          }],
        };
      }
    
      const lines = [
        `=== Calendrier Contenu (${todayStr} → ${cutoffStr}) ===`,
        `${upcoming.length} posts planifies`,
        "",
      ];
    
      // Group by date
      const byDate: Record<string, QueueItem[]> = {};
      upcoming.forEach((item) => {
        if (!byDate[item.scheduled_date]) byDate[item.scheduled_date] = [];
        byDate[item.scheduled_date].push(item);
      });
    
      Object.entries(byDate).forEach(([date, items]) => {
        lines.push(`--- ${date} ---`);
        items.forEach((item) => {
          const preview = item.content.substring(0, 80).replace(/\n/g, " ");
          lines.push(`  [${item.scheduled_time}] ${item.platform.toUpperCase()} | ${item.status} | ${preview}...`);
          lines.push(`  ID: ${item.id}`);
        });
        lines.push("");
      });
  • src/index.ts:939-949 (registration)
    The tool registration for get_content_calendar, including its schema definition.
    server.registerTool(
      "get_content_calendar",
      {
        title: "Get Content Calendar",
        description:
          "View the content calendar/queue. Shows all scheduled content for the next N days.",
        inputSchema: {
          days_ahead: z.number().min(1).max(30).default(7).describe("Number of days to look ahead (1-30)"),
        },
        annotations: { readOnlyHint: true, openWorldHint: false, destructiveHint: false },
      },
Behavior3/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context about the time-bounded nature ('next N days') and scope ('all scheduled content'), but does not disclose pagination behavior, rate limits, or content state filters (e.g., whether drafts are included).

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?

Two efficient sentences with zero waste. Front-loaded with the core action ('View'), followed by scope clarification ('Shows all scheduled content'). Every word earns its place.

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

Completeness4/5

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

For a single-parameter read tool with good annotations, the description adequately covers the operation and time scope. Minor gap: lacking description of return structure given no output schema exists, though 'shows... scheduled content' provides partial clarity.

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?

With 100% schema description coverage, the baseline is 3. The description references 'next N days' which loosely maps to the days_ahead parameter, adding semantic context about the look-ahead window, though this largely overlaps with the schema's own description.

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?

The description uses specific verb 'View' with clear resource 'content calendar/queue', and effectively distinguishes from siblings like schedule_content (write operation) and analyze_post_performance (analytics vs calendar viewing).

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?

No explicit guidance on when to use versus alternatives like schedule_content or draft_post. While 'View' implies read-only usage, it does not state prerequisites, exclusions, or redirect users to sibling tools for write operations.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gomessoaresemmanuel-cpu/content-distribution-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server