Moon Calendar
Server Details
Moon phases, full and new Moon dates, UK moonrise, eclipses, dark skies, tides and Moon sign.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- pyxlino/mooncalendar-mcp
- GitHub Stars
- 0
- Server Listing
- Moon Calendar
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 8 tools
Each tool targets a clearly different use case: current/date moon details, monthly calendar, upcoming phase events, zodiac sign, crescent visibility, tide dates, eclipses, and dark-sky planning. Although several tools surface moon phase data, their granularity and output context are distinct enough that an agent can reliably choose between them.
All tool names use consistent snake_case and follow a verb_noun pattern (check_, find_, get_, list_, plan_). The repeated get_ prefix is used with distinct nouns and does not create naming ambiguity.
Eight tools is well scoped for a moon calendar service, covering the main astronomical and planning workflows without obvious filler. Each tool has a clear reason to exist and the set remains easy to navigate.
The surface covers phases, monthly calendars, event dates, zodiac position, crescent visibility, tides, eclipses, and dark-sky windows, with place-specific rise/set data included in get_moon. No obvious lifecycle or domain gap remains for the stated UK moon-calendar purpose.
Available Tools
8 toolscheck_crescent_visibilityNew crescent Moon sightingARead-onlyIdempotentInspect
Returns the first three evenings after a new Moon with a crescent sighting verdict (likely, difficult or not visible) for each of 24 UK places, with sunset, moonset, Moon age, height and best viewing time. It covers the latest new Moon until its third evening is over, then the next one.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | UK calendar date as YYYY-MM-DD, from 1900 to 2100, near a new Moon. The result is the window the website would show on that date. The current window without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: the verdict is one of three categorical values, output is fixed to 24 named UK places, and the returned window self-advances to the next new Moon after the third evening — the last point materially affects how an agent interprets results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the output shape and location scope, followed by the window-rollover rule. The enumerated field list is dense but functional; nothing is redundant, though the second sentence could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, a fully described single parameter and an output schema handling return values, the description covers what an agent needs to call this correctly, including the time-window semantics. The only shortfall is the lack of explicit routing guidance against the many moon-related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional date parameter is fully documented in the schema itself (YYYY-MM-DD, 1900–2100, near a new Moon, and what the result window means). The description adds no further meaning about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and scope: the first three evenings after a new Moon, with a crescent visibility verdict for 24 UK places plus sunset, moonset, Moon age, height and best viewing time. This is clearly distinguishable from siblings like get_moon or get_moon_calendar, which do not produce a sighting verdict window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (planning crescent sightings in the UK) and explains the coverage window, including how it rolls over to the next new Moon once the third evening has passed. However, it never states when to prefer this over siblings such as find_moon_events or get_moon_calendar, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_moon_eventsMoon phase datesARead-onlyIdempotentInspect
Returns the dates and UK times of upcoming full, new, first quarter and last quarter Moons, with each full Moon's traditional name, its distance, and supermoon, blue Moon, micromoon and black Moon flags. Special Moons can be listed on their own.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UK date to include, as YYYY-MM-DD. Without it the list covers about two years from the start, or up to 2100 for a special Moon. | |
| from | No | First UK date to include, as YYYY-MM-DD. Without it the list starts right now. | |
| count | No | Maximum number of events, from 1 to 24. 6 without it. | |
| phase | No | Phase to list: full, new, first-quarter, last-quarter, or any for all four in date order. Any without it. | |
| special | No | Lists only supermoons, blue Moons, micromoons (full Moons) or black Moons (the second new Moon of a month), so it fixes the phase. None, ordinary phases, without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is fully covered. The description adds useful context (UK time zone, per-event extra fields, filterable special events) but does not mention ordering guarantees, default window behavior, or pagination, which is acceptable for a read-only query tool with annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, the return contents are front-loaded and the special-Moon capability is stated last. No filler, though the trailing sentence about special Moons is slightly vague in phrasing ("listed on their own").
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the parameter schema is fully documented, so the description only needs to frame scope and content, which it does. It stops short of explaining how this tool relates to the other Moon tools, which is the remaining gap for an agent selecting among seven siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is well documented with defaults and limits, so the baseline is a 3. The description goes slightly beyond the schema by establishing the UK-time/UK-date frame that contextualizes the `from`/`to` dates and by clarifying that special-Moon filtering fixes the phase, which helps an agent combine the `phase` and `special` parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Returns the dates and UK times of upcoming full, new, first quarter and last quarter Moons" is a specific verb and resource with the returned fields enumerated (traditional name, distance, supermoon/blue/micromoon/black Moon flags). It is clear what the tool produces, but it never names or distinguishes itself from close siblings such as get_moon_calendar or get_moon, which an agent would need to choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Special Moons can be listed on their own" implies the `special` filter exists for targeted lookups, and the emphasis on dates/times suggests a calendar-style listing. However, there is no explicit when-to-use or when-not-to-use guidance relative to get_moon_calendar, list_eclipses, or get_moon, so the agent must infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_moonMoon on a dateARead-onlyIdempotentInspect
Returns the Moon's phase, percent lit, lunar age, distance from Earth and waxing or waning direction right now, at 12:00 UK time on a date, or at a UK clock time on a date. Also returns whether it is a full Moon, the next full and new Moon, and at a UK place that date's moonrise, highest point and moonset, the Moon's height and compass bearing, and whether it is above the horizon after dark. Times are UK time, GMT or BST.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | UK calendar date as YYYY-MM-DD, from 1900 to 2100. Without it and without a time, or with today's date alone, the result describes the Moon right now; any other date alone gives the Moon at 12:00 UK time. | |
| time | No | UK clock time as HH:MM on a 24-hour clock. The result describes the Moon at that time on the date, or on today's date without one. | |
| place | No | One of 24 UK places for moonrise, highest point, moonset, height and visibility, such as London, Edinburgh, Cardiff, Belfast, Leeds or Lerwick. London without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | Yes | |
| view | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description is consistent with all of them. It adds real context beyond the annotations: all times are UK time GMT/BST, dates are constrained 1900–2100, and place is restricted to 24 UK locations. It does not discuss error behavior for out-of-range places or dates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two sentences, but the first is an extremely dense run-on enumerating every returned field, which duplicates the output schema and makes it hard to scan. It is front-loaded with the purpose, yet trimming the field list would improve readability without losing agent-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 enumerate return values, and it correctly covers the input-mode semantics, time zone, place restriction, and date range. An agent has everything needed to call it correctly; only the absence of routing guidance to sibling tools is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's format, pattern, and defaults. The description's opening sentence usefully consolidates how the three parameters combine into different snapshot modes, but adds no format or constraint detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Returns') and enumerates concrete resources: phase, percent lit, lunar age, distance, waxing/waning, full/new Moon timing, and location-specific moonrise/transit/moonset. This clearly separates it from siblings like get_moon_calendar or get_moon_sign, though it never names an alternative explicitly and partially restates what the output schema already declares.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out the three invocation modes clearly: no date/time gives the Moon right now, a date alone gives 12:00 UK time, and date+time gives that clock time; adding a place unlocks rise/set/visibility. There are no explicit exclusions or named alternatives, so an agent must infer when to prefer find_moon_events or get_moon_calendar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_moon_calendarMoon calendar for a monthARead-onlyIdempotentInspect
Returns every day of one UK calendar month with its Moon phase and percent lit at 12:00 UK time, plus the exact UK times of that month's new, first quarter, full and last quarter Moons.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Calendar year from 1900 to 2100. The current UK year without it. | |
| month | No | Calendar month from 1 to 12. The current UK month without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral detail beyond that: values are sampled at a fixed 12:00 UK time and all times are UK-based, which tells the agent how to interpret the output. It says nothing about error behavior or edge cases at the 1900/2100 boundaries, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, packed but front-loaded with the core resource and scope, followed by the exact payload. There is no filler, no restatement of the title, and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter optional-input, read-only tool with a full output schema and complete annotations, the description covers scope, sampling time, timezone convention, and returned fields. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters already document their ranges and their defaults ('The current UK year/month without it'), so the schema carries the semantics. The description adds nothing about year/month beyond confirming the 'one UK calendar month' granularity, which makes the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Returns every day of one UK calendar month with its Moon phase and percent lit') and pins the scope to a whole month, which cleanly separates it from single-moment siblings like get_moon and event-oriented ones like find_moon_events. It also states the two payloads (daily phase values plus the four exact quarter-Moon times), so an agent knows exactly what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is inferable from the stated scope - an agent can deduce this is the tool for a monthly overview rather than a single instant or a zodiac sign. However, it never explicitly says when to prefer it over get_moon or find_moon_events, nor does it state any exclusions, so the routing decision 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.
get_moon_signMoon signARead-onlyIdempotentInspect
Returns the Moon's zodiac sign right now, on a UK date or at a UK date and time, tropical or Lahiri sidereal, with the degree into the sign, the next sign change and the website's one-line meaning of the sign. With a date alone it returns every sign the Moon is in that day.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | UK calendar date as YYYY-MM-DD, from 1900 to 2100. Without a date and a time the result is the Moon's sign right now. | |
| time | No | UK clock time as HH:MM on a 24-hour clock. With a date it gives the exact sign at that time; without a date it is today. | |
| zodiac | No | Tropical zodiac, which starts at the March equinox, or Lahiri sidereal. Tropical without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | Yes | |
| view | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior: the response changes shape when only a date is given (returns every sign for that day), and it names the extra fields returned. It does not discuss caching, precision, or failure modes, so the added value is moderate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core verb and resource before the qualifiers. Every clause is informative, though the dense single opening sentence stacks many qualifiers and the phrase 'the website's one-line meaning' is slightly ambiguous wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with an output schema, full schema coverage, and explicit annotations, the definition covers scope, timezone, zodiac systems, input combinations, and return contents. Nothing needed to select or invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already fully documented with patterns, ranges, and defaults. The description's contributions ('UK date or UK date and time', the Lahiri-to-'sidereal' enum mapping, and the date-only multi-sign behavior) largely restate or lightly re-frame what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the Moon's zodiac sign') and immediately bounds it in time (right now / UK date / UK date and time), zodiac system, and the concrete payload (degree into sign, next sign change, one-line meaning). The narrow astrological-sign framing is enough to separate it from sibling get_moon, get_moon_calendar, and find_moon_events without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation contexts: omit date/time for the current sign, supply a date alone to get every sign the Moon occupies that day, or date+time for an exact instant. It does not name an alternative sibling or state when a different tool (e.g. get_moon) would be the better choice, so it falls short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tidesSpring and neap tide datesARead-onlyIdempotentInspect
Returns the dates and UK times of spring tides (new and full Moons) and neap tides (first and last quarter Moons) from the Moon's phases, in date order, with the next spring tide and next neap tide first and perigean spring tides flagged. These are tide dates, not times or heights for a port.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | First UK date to include, as YYYY-MM-DD. Without it the list starts right now, or at the start of the year given. | |
| year | No | Calendar year from 1900 to 2100 whose tide dates are listed. Without it the list starts at from, or right now, and runs on into the next year. | |
| count | No | Maximum number of tide dates, from 1 to 24. 8 without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: results are ordered by date with next spring/neap first, perigean spring tides are flagged, times are UK-local, and values are derived from lunar phases rather than harmonic predictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is returned before the scope caveat. Every clause carries information: ordering, flagging, time zone, derivation, and the port-tide exclusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and all three optional parameters are fully specified in the schema. For a simple read-only lookup, the description plus schema plus annotations leave nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each of from/year/count has its default and range documented inline, so the schema does the heavy lifting. The description adds nothing parameter-specific (no interaction rules between from and year beyond what the schema states), which is the expected baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (returns dates of spring and neap tides derived from Moon phases) plus the ordering and flagging behavior. The closing sentence ('These are tide dates, not times or heights for a port') draws a sharp boundary against the common expectation of a port tide table, so an agent can tell exactly what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The exclusion of port tide times/heights is a clear usage signal, and the domain (Moon phases, UK dates) is implied well enough to pick this over the moon-phase siblings. It never names an alternative tool or says when to prefer get_moon_calendar or find_moon_events, but no sibling computes tides, so the routing ambiguity is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eclipsesEclipses seen from the UKARead-onlyIdempotentInspect
Returns upcoming solar and lunar eclipses in date order with the UK peak time, the kind of eclipse and what the UK sees of it, including London contact times, coverage or totality where the Sun or Moon is above the horizon. With a place, each eclipse also shows that place's start, maximum and end, the share of the Sun covered or the Moon's height.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | First UK date to include, as YYYY-MM-DD. Without it the list starts right now. | |
| type | No | Solar, lunar, or any for both. Any without it. | |
| count | No | Maximum number of eclipses, from 1 to 10. 5 without it. | |
| place | No | One of 24 UK places. Each eclipse then shows what that place sees, such as London, Edinburgh, Cardiff, Belfast, Leeds or Lerwick. | |
| visibleFromUk | No | True lists only eclipses that at least one UK place can see; false adds eclipses seen elsewhere. True without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and non-open-world, so the safety profile is covered. The description adds useful behavioral context — results are date-ordered, dates are UK-local, and the visibility filtering determines whether eclipses seen only abroad appear — but since an output schema exists, the detailed field enumeration is partly redundant rather than purely additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core capability, and no filler. The second sentence is slightly dense and stacks several output characteristics, but every clause carries real information about what is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All five parameters are optional, schema coverage is complete, annotations are rich and an output schema exists, so the description only needs to frame scope and results — which it does. The one gap is behavior when no eclipses match the filter (empty result vs. earliest match), which an agent might want to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the 'from' default and the visibleFromUk semantics; baseline is 3. The description contributes only the extra detail that a place yields start/maximum/end times and coverage or Moon altitude per eclipse, which sharpens but does not transform the meaning of the 'place' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns upcoming solar and lunar eclipses') plus the scope ('from the UK', date order) and enumerates the payload: peak time, eclipse kind, London contact times, coverage/totality. That framing is clearly distinguishable from the sibling moon-calendar and moon-event tools, so no schema reading is needed to identify it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description makes clear this is for looking up upcoming eclipses visible from the UK, and the second sentence hints that supplying a place enriches the result. There is no explicit guidance on when to prefer a sibling tool (find_moon_events, get_moon_calendar) for related sky events, and no mention of when the list would be empty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_dark_skiesDark-sky and Moon photography nightsARead-onlyIdempotentInspect
Returns the nights of one UK month with a dark-sky window, when the Sun is more than 18° below the horizon and the Moon is down, at one of 24 UK places, with each night's window times, hours and Moon phase. For photography it returns each night's Moon window, when the Moon is at least 5° up while the Sun is more than 6° below the horizon. Times are UK time, GMT or BST.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | UK calendar month as YYYY-MM, from 1900-01 to 2100-12. The current UK month without it. | |
| place | No | One of 24 UK places, such as London, Edinburgh, Cardiff, Belfast, Leeds or Lerwick. London without it. | |
| purpose | No | Dark lists nights with a moonless dark-sky window; photo lists nights with a Moon photography window. Dark without it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| total | Yes | |
| request | Yes | |
| pageSize | Yes | |
| nextCursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety bar is low. The description adds real substance beyond them: the exact solar/lunar thresholds per mode, the fixed set of 24 UK places, and the timezone convention (GMT/BST), which an agent needs to interpret results correctly. It does not discuss limits such as maximum month range or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that front-load the core return value before qualifying the photo mode and timezone. Every clause carries information, though the phrase 'with each night's window times, hours and Moon phase' is somewhat compressed and borders on listing return fields already implied by the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, three-field query tool with an output schema and full annotation coverage, the description supplies the remaining essentials: the defining thresholds, defaults, place cardinality and timezone. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the YYYY-MM pattern and the dark/photo enum semantics, so the schema already does the heavy lifting. The description largely restates what those parameters produce rather than adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns nights of one UK month with a dark-sky window, at one of 24 UK places, with window times, hours and Moon phase. The astronomical thresholds (Sun >18° below horizon, Moon down) and the separate 'photo' mode make it clearly distinct from siblings like find_moon_events or check_crescent_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description frames the two usage contexts (dark-sky observing vs photography) and describes what each mode yields, so usage is implied. However, it never says when to prefer this tool over the listed siblings, nor any exclusions, leaving the agent to infer routing from the mode semantics alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
- First observed
check_crescent_visibility - First observed
find_moon_events - First observed
get_moon - First observed
get_moon_calendar - First observed
get_moon_sign - First observed
get_tides - First observed
list_eclipses - First observed
plan_dark_skies
Related MCP Connectors
Moon phases, moon signs, full/new moon dates 1900-2100, moonrise/moonset for any coordinates.
Daily horoscopes (en/es/pt, 7 days ahead), moon phases, Panchang, solar terms, Maya, Ramadan dates.
Elevation-corrected sun, moon, twilight, solar and tide data for any point on Earth
Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides authoritative astronomical data including moon phases, solar eclipses, and sun/moon rise and set times using the US Navy API or offline Skyfield calculations. It enables users to query Earth's seasons and celestial events for any location and date.81Apache 2.0
- AlicenseAqualityBmaintenancePrecision-audited astrology MCP for natal charts, transits, synastry and moon phases. No API key.1091 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides solar eclipse predictions, local eclipse circumstances, Moon phases, and seasons from the US Naval Observatory's Astronomical Applications API.185 npm1MIT
- AlicenseNot gradedqualityDmaintenanceProvides astronomical data including ISS tracking, moon phases, NASA APOD, near-Earth objects, exoplanets, space weather, and upcoming celestial events without requiring an API key.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.