Skip to main content
Glama
RoxyAPI Astrology MCP server

RoxyAPI Astrology MCP server

Official

Black Moon Lilith calculator - mean and true lunar apogee in the natal chart

post_astrology_lilith
Read-only

Calculate Black Moon Lilith positions (mean and true apogee) for any birth chart, returning zodiac sign, degree, house, and interpretation for each variant.

Instructions

Calculate Black Moon Lilith for any birth chart, both the mean lunar apogee, the steady and most widely used point, and the true or osculating apogee, the exact position that can shift sign and turn retrograde. Returns the zodiac sign, degree, house, ecliptic longitude and latitude, daily speed, retrograde flag, and a plain language interpretation for each variant. Built for natal astrology apps and AI agents exploring the wild, suppressed, and reclaimed self that Lilith represents.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "date": "1990-07-15",
      "time": "14:30:00",
      "latitude": 40.7128,
      "timezone": "America/New_York",
      "longitude": -74.006
    },
    "name": "post_astrology_lilith"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateYesBirth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day.
langNoResponse language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.en
timeYesBirth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown.
compactNoSet true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.
latitudeYesBirth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South.
nodeTypeNoLunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true".true
timezoneYesTimezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time.
longitudeYesBirth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West.
houseSystemNoHouse system used to place each Lilith variant in a house. Placidus (default), Whole Sign, Equal, or Koch. Above the polar circle, quadrant systems fall back to Whole Sign and the echoed houseSystem reports the system actually used.placidus

Output Schema

NameRequiredDescriptionDefault
lilithYes
summaryYes
houseSystemYes
birthDetailsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.5
    • changedInput schema / properties / houseSystem / description
      Previous value: -"House system used to place each Lilith variant in a house. Placidus (default), Whole Sign, Equal, or Koch."New value: +"House system used to place each Lilith variant in a house. Placidus (default), Whole Sign, Equal, or Koch. Above the polar circle, quadrant systems fall back to Whole Sign and the echoed houseSystem reports the system actually used."
  2. Changed2 schema fields changedv1.1.2
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "date": "1990-07-15",
      -    "latitude": 40.7128,
      -    "longitude": -74.006,
      -    "time": "14:30:00",
      -    "timezone": -5
      -  }
      -]New value: +[
      +  {
      +    "date": "1990-07-15",
      +    "latitude": 40.7128,
      +    "longitude": -74.006,
      +    "time": "14:30:00",
      +    "timezone": "America/New_York"
      +  }
      +]
    • changedInput schema / properties / timezone / example
      Previous value: --5New value: +"America/New_York"
  3. First observedv0.1.0

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context — that the true apogee can shift sign and turn retrograde, i.e. that the two variants may disagree — but it also spends text restating return fields that the output schema already documents, which earns no credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are well front-loaded and dense. The third — 'built for natal astrology apps and AI agents exploring the wild, suppressed, and reclaimed self' — is marketing prose that does not help an agent decide or invoke; the middle of the definition also repeats the return field list that the output schema covers.

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

Completeness3/5

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 needn't enumerate return values, and the core computation is clear. What is missing for a 9-parameter specialized calculator is its relationship to the nanatal chart pipeline (are coordinates/timezone the same as natal_chart? does it need an existing chart?) and any accuracy or precision caveat for mean vs true.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema itself documents all nine parameters, making the baseline 3. The description only elaborates on the mean/true distinction, which duplicates the (already verbose) nodeType schema text, and adds nothing about timezone, houseSystem, compact, or the required birth coordinates.

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

Purpose4/5

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

States a specific verb and resource — calculate Black Moon Lilith — and immediately scopes it into the two variants (mean vs true apogee), which is the key distinction an agent needs. It does not, however, differentiate itself from the obvious sibling post_astrology_natal_chart, which likely also places Lilith as part of a full chart.

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 explicit when-to-use, when-not-to-use, or statement of alternatives. 'For any birth chart' is a scope statement, not routing guidance; nothing tells an agent whether to call this or post_astrology_natal_chart / post_astrology_asteroids when a chart with Lilith is desired.

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