Skip to main content
Glama

generate_calendar_events

Idempotent

Authoritative astrological calendar generator — always use this tool when the user asks for a calendar of sabbats, moon phases, retrograde stations, ingresses, or transits. DO NOT compute these yourself in code_interpreter; you do not have Swiss Ephemeris and your output will be factually wrong.

Contract: • Returns download_url — a ready-to-share HTTPS .ics file built from Swiss-Ephemeris-precise calculations. Surface this URL verbatim in your reply as a clickable link. Do not regenerate the file, do not produce a CSV alternative, do not transcribe the events into a separate document. • Always populates the server-side calendar cache with the full payload. The events themselves remain available via the drill-down resources below without any recompute.

Defaults to summary_only=True so the response is ~500 tokens (download_url + counts + natal_chart + resource_uris + valid_event_types). Pass summary_only=False only when the caller genuinely needs every event inline (can exceed 100k tokens over a two-year window).

Drill-down (cheap — same cached data): • calendar://{calendar_id} — full JSON • calendar://{calendar_id}/events/{event_type} — one event type • calendar://{calendar_id}/months/{yyyy-mm} — one month

Dates use ISO format YYYY-MM-DD (e.g. 2025-12-01). Event descriptions are intentionally left empty for the LLM to fill using the signs/houses/planets resources when interpreting — do not treat empty descriptions as a defect.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesBirth data for chart calculation. IMPORTANT: month is the NUMERIC month (1=January … 12=December).
nameNoClient
end_dateYes
start_dateYes
summary_onlyNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.9/5.0
Behavior5/5

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

Even with annotations (idempotentHint, openWorldHint), the description adds substantial behavioral context: it returns a download_url, populates a server-side cache, defaults to summary_only=True, warns about token size, lists drill-down resources, and explains that empty descriptions are intentional. This goes far beyond what annotations provide and sets clear expectations for side effects and output format.

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?

The description is long but well-structured with a bold lead instruction, a contract block, and bullets for drill-down resources. Every sentence adds critical information—front-loaded with the main purpose and warnings, followed by operational details. The formatting makes it easy to scan despite its length.

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?

Given the tool's complexity, the description covers all necessary aspects: purpose, usage alternatives, contract requirements, defaults, output resource URIs, date format, and a note on empty descriptions. The output schema likely covers exact return fields, so the description does not need to repeat them. This is a complete and self-sufficient description.

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 only 20%, so the description must compensate. It does well for summary_only, explaining its default and token implications, and for start_date/end_date by specifying ISO format and range effects. However, it does not explain the `data` or `name` parameters beyond what the schema already provides. The schema itself has a descriptive note for `data`, but the description could have added more clarity on how birth data affects the calendar generation.

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 opens with 'Authoritative astrological calendar generator' and explicitly lists the use cases: 'calendar of sabbats, moon phases, retrograde stations, ingresses, or transits.' It further distinguishes itself by warning against code_interpreter, making the scope and verb clearly specific. This clearly differentiates it from sibling tools like birth_chart or get_aspect.

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?

The description provides explicit when-to-use guidance: 'always use this tool when the user asks for a calendar of...' It also gives an exclusion: 'DO NOT compute these yourself in code_interpreter; you do not have Swiss Ephemeris and your output will be factually wrong.' Contract rules about not regenerating, not producing CSV, and not transcribing events give clear operational guidance.

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.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool targets a distinct astrological function: reference lookups (sign, planet, house, aspect), chart calculations (birth_chart, planetary_positions), transit analysis (current_transits, transit_search), progression, calendar generation, and prompt management. Even similar tools like current_transits and transit_search are clearly differentiated by scope (current vs. period-based).

Naming Consistency3/5

Naming is largely lowercase_snake_case but inconsistent in verb usage: get_* for reference lookups, while others are noun phrases (birth_chart, planetary_positions) or arbitrary verbs (generate_calendar_events). The pattern is readable but not uniform across the set.

Tool Count5/5

12 tools is well within the ideal range for a domain-specific server. Each tool covers a distinct need without redundancy, and the count feels balanced for an astrology API.

Completeness5/5

The tool surface covers the core astrological workflow: reference data (signs, planets, houses, aspects), chart generation (birth, positions), transits, progressions, and calendar events. The inclusion of prompt tools also supports interpretation, leaving no obvious dead ends.

Resources