Skip to main content
Glama

Stream Eclipse Totality

astroway_stream_eclipse_totality

Next solar+lunar eclipses with totality info.

[Group: Real-time Streaming] [Endpoint: POST /v1/stream/eclipse-totality] [Cost: 10 credits (Tier 1)]

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": "astroway_stream_eclipse_totality"
  }
}

Input Schema

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
latitudeNo
longitudeNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescriptionDefault
noteNo
pricingNo
nextLunarNo
nextSolarNo
timestampNo
transportNo
sseUpgradeNo
nextEventAtNo
tickSecondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed20 schema fields changed
    • removedInput schema / properties / latitude / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / latitude / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedInput schema / properties / longitude / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / longitude / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / nextEventAt / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / nextEventAt / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / nextLunar / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "beginAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "daysUntil": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "durationHours": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "endAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "isTotal": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "longitude": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "maxAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "sign": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "type": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "beginAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "daysUntil": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "durationHours": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "endAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "isTotal": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "longitude": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "maxAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sign": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / nextSolar / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "beginAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "daysUntil": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "durationHours": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "endAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "isTotal": {
      -        "anyOf": [
      -          {
      -            "type": "boolean"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "longitude": {
      -        "anyOf": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "maxAt": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "sign": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "type": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "beginAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "daysUntil": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "durationHours": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "endAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "isTotal": {
      +        "type": [
      +          "boolean",
      +          "null"
      +        ]
      +      },
      +      "longitude": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "maxAt": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "sign": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "type": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / note / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / note / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / pricing / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / pricing / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / sseUpgrade / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / sseUpgrade / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / tickSeconds / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / tickSeconds / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / timestamp / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / timestamp / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / transport / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / transport / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. First observed

TDQS

C2.7/5.0
Behavior3/5

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

The description adds genuinely useful behavioral context beyond the annotations: the POST endpoint path and a cost of 10 credits (Tier 1). However, it never explains what 'stream' means here—whether the call returns a single eclipse snapshot, an SSE/chunked stream, or a long-lived subscription—which is the most important behavior for an agent to know given readOnlyHint=false and idempotentHint=false. It also omits any auth or rate-limit notes.

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?

The definition is short and front-loaded, with the purpose first and the group/endpoint/cost metadata as a compact trailer. Every line carries information, though the single-sentence purpose is arguably too terse for a tool with a 4-parameter, streaming surface.

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

Completeness2/5

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

An output schema exists, so return-value shape need not be explained, but the description still leaves critical gaps for a streaming, cost-incurring, location-aware tool: streaming mechanics, the effect of omitting coordinates, and how it differs from eclipse_incoming. For a 4-parameter endpoint with half its parameters undocumented, this is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'fields' and 'precision' are documented in the schema, but 'latitude' and 'longitude' have no description anywhere. The tool description contributes nothing about parameters—not even what happens when latitude/longitude are omitted (geocentric vs. topocentric, default observer location), which is a meaningful semantic gap for an eclipse tool.

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

Purpose3/5

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

The phrase "Next solar+lunar eclipses with totality info" identifies the resource and a distinguishing attribute (totality), but there is no verb and no statement of what the tool actually returns or does (one-shot forecast, stream, subscription). It does not distinguish itself from the near-identical sibling astroway_stream_eclipse_incoming, leaving the agent unable to choose between them from the description alone.

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?

There is no when-to-use guidance, no prerequisites, and no mention of the closest alternative (eclipse_incoming, or webhooks_eclipse_alert for push-based delivery). The only contextual hint is the bracketed '[Group: Real-time Streaming]' label, which implies a category but not a selection rule.

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