thirdtrail
Server Details
Elevation-corrected sun, moon, twilight, solar and tide data for any point on Earth
- Status
- Healthy
- Uptime
- 91.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- thirdtrail/thirdtrail-python
- GitHub Stars
- 0
TDQS
Scored across 8 tools
Tools have largely distinct purposes, and descriptions explicitly cross-reference related tools. However, get_tide_window deliberately overlaps with get_tide_extremes and get_sun_moon_times by combining their outputs, which creates some potential for misselection despite the guidance.
All eight tools use a consistent snake_case get_<resource> pattern, making the naming highly predictable and easy to scan.
Eight tools is well-scoped for a solar, prayer-time, and tide API. Each tool covers a distinct data product or planning composite without redundancy.
The surface covers solar position/path, daily light integral, sun/moon times, prayer times, and tide extremes/heights/window. Minor gaps exist, such as no moon position or UV/twilight-only tool, but core workflows are well supported.
Available Tools
8 toolsget_daily_light_integralDaily light integralARead-onlyIdempotentInspect
Clear-sky Daily Light Integral in mol/m²/day for each day in a range: photosynthetically active radiation integrated from sunrise to sunset. Use it to plan crop growth or supplemental greenhouse lighting; it assumes cloudless skies, so treat it as the ceiling for the site. Pass from and to together for a range of UTC days, or neither for today. Requires an API key on a paid Solar plan.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Last UTC day, YYYY-MM-DD. Requires from. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| from | No | First UTC day, YYYY-MM-DD. Requires to. | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and non-open-world. The description adds value beyond them: the clear-sky modeling assumption, the ceiling interpretation, and the auth prerequisite ('Requires an API key on a paid Solar plan'). It does not describe output shape or rate limits, keeping it out of 5 territory.
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 tight sentences: quantity/unit first, then purpose and caveat, then parameter behavior and auth. No filler, well front-loaded.
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 single-metric read tool with no output schema, the description conveys the unit, per-day granularity, range semantics, assumptions, and auth requirement. Return-format detail is absent but the metric's shape is adequately implied.
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%, so baseline is 3, but the description adds default behavior the schema does not state: passing from/to together for a range, or neither for today. That is real semantic gain beyond the individual 'Requires to'/'Requires from' notes.
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 quantity with its unit ('Clear-sky Daily Light Integral in mol/m²/day') and scope ('for each day in a range'), which is distinctive against siblings like get_solar_position or get_prayer_times. It does not explicitly name a sibling, but the resource itself is unique enough that confusion is unlikely.
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 intent ('plan crop growth or supplemental greenhouse lighting') and an important interpretation caveat (cloudless skies, treat as the ceiling). It omits any when-not or explicit alternative tool, but the context is unambiguous for its niche.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prayer_timesIslamic prayer timesARead-onlyIdempotentInspect
Fajr, sunrise, dhuhr, asr, maghrib and isha for one date at a location, elevation-corrected. Use it for Islamic prayer schedules; for general sunrise, sunset and twilight use get_sun_moon_times. school is required and sets the fajr and isha rules; asr_method picks the shadow rule and defaults to shafi. date defaults to today. Requires an API key on a paid Ephemerides plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| date | No | Day as YYYY-MM-DD. Defaults to today. | |
| school | Yes | Calculation school: mwl (Muslim World League), isna (Islamic Society of North America), egyptian (Egyptian General Authority of Survey), karachi (University of Islamic Sciences, Karachi), uaq (Umm al-Qura, Makkah). | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. | |
| asr_method | No | Asr shadow rule: shafi (default; also Maliki and Hanbali) or hanafi, which gives a later Asr. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely useful non-annotation context: elevation correction of the computed times, the paid-plan auth requirement, and which parameters drive which outputs. It doesn't describe return format, but that is a minor omission.
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?
Front-loaded with the returned values, then usage routing, then defaults and prerequisites. Every sentence carries distinct information with no filler.
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 7-parameter read-only computation with no output schema, the description covers what is produced, how to choose it over siblings, defaults, the required school parameter, and the auth requirement. Nothing an agent needs to invoke 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 coverage is 100%, so the baseline is 3, but the description adds relational meaning the schema doesn't: school sets the fajr and isha rules, asr_method selects the shadow rule with shafi as default, and date defaults to today. This is more than restating the field list.
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 the exact resource (Fajr, sunrise, dhuhr, asr, maghrib, isha) and the scope (one date at a location, elevation-corrected). It explicitly contrasts itself with the sibling get_sun_moon_times, so an agent can route correctly without opening either 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?
States when to use it ('Islamic prayer schedules') and names the alternative for the non-Islamic case (get_sun_moon_times). It also surfaces prerequisites and defaults: school is required, asr_method defaults to shafi, date defaults to today, and an API key on a paid plan is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solar_pathSolar path for a dayARead-onlyIdempotentInspect
The sun's azimuth and altitude through one UTC day, sampled every interval: a list of timestamped positions. Use it for shading studies, PV siting and panel-angle planning; for a single instant use get_solar_position. date defaults to today and interval to 15m. Requires an API key on a paid Solar plan.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| date | No | UTC day as YYYY-MM-DD. Defaults to today. | |
| interval | No | Sampling step. Defaults to 15m. | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds the return shape, default values, and an important access constraint: an API key on a paid Solar plan is required.
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?
The description is compact and front-loaded: output shape first, then use cases, alternative tool, defaults, and access requirement. Every sentence earns its place.
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?
Despite no output schema, the description summarizes the return value as a list of timestamped azimuth/altitude positions. Combined with full parameter schema coverage and annotations covering safety, an agent has enough to invoke it correctly.
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 explains each parameter including bounds, defaults, and elevation rationale. The description reinforces date and interval defaults but adds no parameter syntax or constraints beyond the schema.
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 states a specific resource and output: the sun's azimuth and altitude through one UTC day, sampled at an interval, as timestamped positions. It also distinguishes the tool from get_solar_position by contrasting daily path versus single instant.
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 gives explicit use cases (shading studies, PV siting, panel-angle planning) and directly routes single-instant queries to get_solar_position. The defaults for date and interval further clarify expected usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_solar_positionSolar position and irradianceARead-onlyIdempotentInspect
The sun's position at one instant: azimuth, altitude, zenith, declination, hour angle and equation of time, plus clear-sky irradiance (GHI, DNI and DHI in W/m²) when include asks for it and the plan covers it. Use it for where the sun is at a given moment; for its track through a whole day use get_solar_path, and for rise and set times use get_sun_moon_times. timestamp defaults to now. Positions are NREL SPA-equivalent on JPL DE421; irradiance comes from the Bird clear-sky model. Requires an API key on a paid Solar plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| include | No | position (default) or position,irradiance. | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. | |
| timestamp | No | ISO 8601 instant, e.g. 2026-06-21T12:00:00Z. Defaults to now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: an API key on a paid Solar plan is required, and results are NREL SPA-equivalent on JPL DE421 with Bird clear-sky irradiance — provenance that affects trust in the numbers.
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?
Front-loaded with the payload and the sibling routing, then defaults and provenance. Every clause carries information, though the run-on sentence packing the include/plan condition with the output list costs some readability.
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 no output schema, the description enumerates the returned fields and their units, states the default for timestamp, and discloses the plan/auth prerequisite. An agent has everything needed to call it correctly and interpret the response.
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%, so all six parameters including timestamp's 'defaults to now' and elevation's guidance are already documented. The description adds only the conditional gate that irradiance appears 'when include asks for it and the plan covers it', which is marginal beyond the enum in the schema.
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+resource ('the sun's position at one instant') and enumerates the exact quantities returned (azimuth, altitude, zenith, declination, hour angle, equation of time, GHI/DNI/DHI). It further distinguishes itself from get_solar_path and get_sun_moon_times by scope, so an agent can route 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?
Explicit when-to-use ('where the sun is at a given moment') plus named alternatives for adjacent needs: get_solar_path for a full day's track and get_sun_moon_times for rise/set. 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.
get_sun_moon_timesSun and moon timesARead-onlyIdempotentInspect
Sunrise, sunset, solar noon, civil, nautical and astronomical twilight, golden and blue hour, moonrise, moonset and moon phase for a location, one entry per day. Use it for any question about when the sun or moon rises, sets or gets dark; for the sun's angle at a given moment use get_solar_position, and for tides alongside the sun use get_tide_window. Pass elevation whenever you know it: it shifts sunrise and sunset at altitude. Defaults: from today, 7 days or the plan's limit if lower. Requires an API key on a paid Ephemerides plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| days | No | Number of days to return. The ceiling is plan-dependent. | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. | |
| start_date | No | First day as YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds behavior beyond them: it requires an API key and a paid Ephemerides plan, and discloses the default window (today, 7 days, or the plan's lower ceiling). It does not cover rate limits or output format, so it stops 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?
The returned quantities are front-loaded in the first sentence, followed immediately by usage routing, an actionability hint about elevation, and defaults. Every clause carries information an agent needs to call the tool correctly; there is no padding.
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 no output schema, the description carries the burden of describing returns and does so exhaustively (all solar/lunar event types, one entry per day). Auth prerequisites and default time window are also stated, so an agent has everything needed for correct invocation.
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%, so the baseline is 3. The description still adds meaning: it quantifies the days default ('7 days or the plan's limit if lower'), which the schema only leaves as 'plan-dependent', and it re-emphasizes that supplying elevation shifts sunrise/sunset at altitude.
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+resource (sun and moon rise/set times for a location) and enumerates the exact quantities returned: sunrise, sunset, solar noon, the three twilights, golden and blue hour, moonrise/set and phase, one entry per day. It explicitly distinguishes itself from siblings by noting get_solar_position is for the sun's angle at a moment and get_tide_window for tides.
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 states the when-to-use condition ('any question about when the sun or moon rises, sets or gets dark') and names two alternatives with the exact conditions that select them (sun's angle at a moment -> get_solar_position; tides alongside the sun -> get_tide_window). Explicit exclusions plus routing leave nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tide_extremesHigh and low tidesARead-onlyIdempotentInspect
High and low water times and heights at any coastal point, from the FES2022 global tide atlas: a list of events, each with type (high or low), time and height_m. Use it for when high or low tide is; for a continuous curve use get_tide_heights, and for tides together with sunrise, golden hour and moon phase use get_tide_window. Heights are metres relative to MEAN SEA LEVEL, not chart datum — never use for navigation. Defaults: from today, 2 days or the plan's limit if lower. Requires an API key on a paid Tides plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| days | No | Number of days to return. The ceiling is plan-dependent. | |
| start_date | No | First day as YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/idempotent safety profile, and the description still adds critical context beyond them: heights are relative to MEAN SEA LEVEL not chart datum, an explicit 'never use for navigation' warning, an auth requirement (API key on a paid Tides plan), and default date-range behavior. This is rich behavioral disclosure.
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?
Front-loads purpose and return shape, then usage routing, then the datum caveat and auth/default facts. Dense but every sentence carries distinct, non-redundant information; no filler.
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?
No output schema exists, and the description compensates by describing the returned event list and height units. Combined with full schema coverage and annotations, an agent has everything needed to call and interpret the tool.
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% so the schema documents each parameter, but the description adds default values not in the schema (from today, 2 days or the plan's limit) for start_date/days. It does not add format or syntax detail for tz/lat/lon, so it is a modest improvement over the 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+resource (returns high/low water times and heights), names the data source (FES2022), and specifies the return shape (events with type, time, height_m). It explicitly differentiates from the two nearest siblings, get_tide_heights and get_tide_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?
Gives an explicit when-to-use ("when high or low tide is") plus named alternatives with the condition that selects each: get_tide_heights for a continuous curve, get_tide_window for tides with sun/moon context. 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.
get_tide_heightsTide height seriesARead-onlyIdempotentInspect
Water height at a coastal point at a fixed step: a list of time and height_m pairs. Use it to plot a tide curve or read the height at a particular time; for just the highs and lows use get_tide_extremes. Metres relative to mean sea level, not chart datum. Defaults: from today, 2 days, and the finest step the plan allows, but no finer than 10m. Requires an API key on a paid Tides plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| days | No | Number of days to return. The ceiling is plan-dependent. | |
| step | No | Sampling interval. Finer steps need a higher plan. | |
| start_date | No | First day as YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningfully beyond that: the datum caveat ('metres relative to mean sea level, not chart datum'), the three default behaviors, the plan-dependent step floor (no finer than 10m), and the auth/plan requirement.
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 sentences, each doing distinct work: shape, usage/alternative, constraints. Front-loaded with what is returned, with no filler or restated field names.
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 no output schema, the description still characterizes the return as time/height pairs. Combined with 100% schema coverage and disclosed auth/plan and datum constraints, an agent has everything needed to call it correctly.
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%, so the baseline is 3, but the description supplies default values the schema omits for start_date, days, and step ('from today, 2 days, and the finest step the plan allows, but no finer than 10m'). It does not add units or format detail for tz/lat/lon beyond the schema, so it is not a full 5.
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+resource with the exact return shape ('a list of time and height_m pairs'), and explicitly contrasts itself with the sibling get_tide_extremes. An agent can distinguish it from get_tide_window and get_tide_extremes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('plot a tide curve or read the height at a particular time') and an explicit routing rule: 'for just the highs and lows use get_tide_extremes'. It also names the access prerequisite (API key on a paid Tides plan), which is a selection constraint in practice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tide_windowCoastal planning windowARead-onlyIdempotentInspect
Per day: high and low waters together with sunrise, sunset, golden and blue hour, twilight and moon phase in a single call. The planning tool for coastal photography, fishing and shore work; use it instead of calling get_tide_extremes and get_sun_moon_times separately. Pass elevation when you know it: it shifts the sun and moon times — roughly three minutes at clifftop height — but never the tide heights, which do not depend on where the observer stands. Defaults: from today, 2 days or the plan's limit if lower. Requires an API key on a paid Tides plan.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC. | |
| lat | Yes | Latitude in decimal degrees. | |
| lon | Yes | Longitude in decimal degrees. | |
| days | No | Number of days to return. The ceiling is plan-dependent. | |
| elevation | No | Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown. | |
| start_date | No | First day as YYYY-MM-DD. Defaults to today. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/idempotent) by disclosing an auth prerequisite (API key on a paid Tides plan), the default window behavior, the plan-dependent cap on days, and a subtle behavioral trait — elevation shifts sun/moon times by roughly three minutes but never tide heights.
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?
Front-loads what the call returns, then usage, then the elevation nuance, defaults, and key requirement — each sentence carries distinct information. Dense but no filler; slightly long for the payload.
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 no output schema, the description enumerates the returned per-day data, and it covers defaults, plan limits, and auth. Nothing an agent needs to invoke 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 coverage is already 100%, so baseline is 3, but the description adds real meaning: it quantifies elevation's effect (~3 min) and clarifies that tide heights are observer-independent, which disambiguates the parameter's scope. It does not add syntax beyond the schema for tz/days/start_date.
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+resource: per-day high/low waters plus sunrise, sunset, golden/blue hour, twilight and moon phase. It explicitly distinguishes itself from the sibling tools get_tide_extremes and get_sun_moon_times, so an agent can select it without opening the 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?
Names the two alternatives it replaces (get_tide_extremes, get_sun_moon_times) and the reason to prefer it (single call). It also gives conditional guidance on when to pass elevation ('when you know it') and when to omit it.
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
- Changed
get_daily_light_integral3 fields changed- changed
Input schema / properties / from / descriptionPrevious value: -"Range start, YYYY-MM-DD."New value: +"First UTC day, YYYY-MM-DD. Requires to." - changed
Input schema / properties / to / descriptionPrevious value: -"Range end, YYYY-MM-DD."New value: +"Last UTC day, YYYY-MM-DD. Requires from." - removed
Input schema / properties / tzRemoved value: -{ - "description": "IANA timezone for output timestamps, e.g. Europe/Dublin.", - "type": "string" -}
- Changed
get_prayer_times7 fields changed- changed
Input schema / properties / asr_method / descriptionPrevious value: -"Asr shadow rule."New value: +"Asr shadow rule: shafi (default; also Maliki and Hanbali) or hanafi, which gives a later Asr." - changed
Input schema / properties / asr_method / enumPrevious value: -[ - "standard", - "hanafi" -]New value: +[ + "hanafi", + "shafi" +] - changed
Input schema / properties / date / descriptionPrevious value: -"Day as YYYY-MM-DD."New value: +"Day as YYYY-MM-DD. Defaults to today." - changed
Input schema / properties / school / descriptionPrevious value: -"Calculation school: mwl, isna, egypt, makkah, karachi."New value: +"Calculation school: mwl (Muslim World League), isna (Islamic Society of North America), egyptian (Egyptian General Authority of Survey), karachi (University of Islamic Sciences, Karachi), uaq (Umm al-Qura, Makkah)." - added
Input schema / properties / school / enumAdded value: +[ + "egyptian", + "isna", + "karachi", + "mwl", + "uaq" +] - changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC." - changed
Input schema / requiredPrevious value: -[ - "lat", - "lon" -]New value: +[ + "lat", + "lon", + "school" +]
- Changed
get_solar_path4 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Day as YYYY-MM-DD."New value: +"UTC day as YYYY-MM-DD. Defaults to today." - changed
Input schema / properties / interval / descriptionPrevious value: -"Sampling step, e.g. 5m, 15m, 1h."New value: +"Sampling step. Defaults to 15m." - added
Input schema / properties / interval / enumAdded value: +[ + "1m", + "5m", + "15m", + "1h", + "1d" +] - removed
Input schema / properties / tzRemoved value: -{ - "description": "IANA timezone for output timestamps, e.g. Europe/Dublin.", - "type": "string" -}
- Changed
get_solar_position4 fields changed- changed
Input schema / properties / include / descriptionPrevious value: -"Comma-separated sections, e.g. position,irradiance."New value: +"position (default) or position,irradiance." - added
Input schema / properties / include / enumAdded value: +[ + "position", + "position,irradiance" +] - changed
Input schema / properties / timestamp / descriptionPrevious value: -"ISO 8601 instant, e.g. 2026-06-21T12:00:00Z."New value: +"ISO 8601 instant, e.g. 2026-06-21T12:00:00Z. Defaults to now." - changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."
- Changed
get_sun_moon_times1 field changed- changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."
- Changed
get_tide_extremes1 field changed- changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."
- Changed
get_tide_heights3 fields changed- changed
Input schema / properties / step / descriptionPrevious value: -"Sampling interval, e.g. 10m, 1h. Finer steps are plan-gated."New value: +"Sampling interval. Finer steps need a higher plan." - added
Input schema / properties / step / enumAdded value: +[ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h" +] - changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."
- Changed
get_tide_window1 field changed- changed
Input schema / properties / tz / descriptionPrevious value: -"IANA timezone for output timestamps, e.g. Europe/Dublin."New value: +"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."
5 tool updates
- Added
get_daily_light_integral - Added
get_prayer_times - Added
get_solar_path - Added
get_solar_position - Added
get_sun_moon_times
3 tool updates
- First observed
get_tide_extremes - First observed
get_tide_heights - First observed
get_tide_window
Related MCP Connectors
Read-only astronomy calculations: sun, moon, planets, eclipses, twilight and star positions.
Offline observational astronomy: positions, rise/set, moon phases, eclipses, and seasons.
Current time by timezone, astronomy events, and moon phases
Discover the magic of day and night with our Sunrise & Sunset API. Get accurate sunrise, sunset,
Related MCP Servers
- AlicenseAqualityAmaintenanceCalculate the altitude, rise, and set times of celestial objects (Sun, Moon, planets, stars, and deep-space objects) for any location on Earth.15MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying sunrise, sunset, dawn, dusk, solar noon, golden hour, and day length for any latitude/longitude and date, returning times in the location's local timezone.24 npmMIT
- 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
- AlicenseNot gradedqualityBmaintenanceProvides solar eclipse predictions, local eclipse circumstances, Moon phases, and seasons from the US Naval Observatory's Astronomical Applications API.25 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.