Lunonis Astrology
Server Details
Birth charts, synastry and birth-place search from an ephemeris. Free, read-only, nothing stored.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The three tools have clearly distinct purposes: one calculates a single natal chart, one compares two charts, and one resolves city names. Their inputs overlap in using birth data, but the descriptions make the boundaries explicit and search_places is clearly a helper for the other two.
All names use snake_case, but the convention is mixed: search_places is verb_noun, while compatibility and natal_chart are noun phrases. The names remain readable, but they do not follow a predictable shared pattern.
Three tools are well-scoped for a focused astrology server: natal chart calculation, synastry comparison, and place disambiguation. Each tool has a clear role, and there are no redundant or filler tools.
The surface covers the core advertised workflows: chart calculation, compatibility comparison, and the city lookup needed to support both. Broader astrology operations such as transits or forecasts are absent, but the tools link to the website for fuller results, so the gaps are minor for the stated scope.
Available Tools
3 toolscompatibilityCompatibility (synastry)ARead-onlyIdempotentInspect
Compare two people's charts (synastry) from their birth data. Returns the overall tone (flowing, mixed or charged), whether the Sun elements match, the classic pairings (Venus-Mars, Sun-Moon, Moon-Moon, Venus-Venus), the tightest Moon, Venus, Mars and Sun contacts between the two charts, and a link to the free full comparison on lunonis.com. Counted aspects only: there is no compatibility score. Nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| personA | Yes | First person | |
| personB | Yes | Second person |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context: counted aspects only, no compatibility score, nothing stored, and concrete return categories. It does not cover auth or rate limits, but for a read-only calculator it is solid.
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 the purpose, then enumerates the return contents, then closes with two short caveats. Every sentence earns its place and there is 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 two-parameter nested-object tool with no output schema, the description supplies the missing return-value picture and the key limitation that there is no compatibility score. Annotations and schema cover safety and input details, so nothing critical is absent.
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%: the nested personA/personB objects, date/time/place constraints, and unknown-time handling are already fully documented. The description only says 'from their birth data' and adds no parameter meaning beyond the schema, so 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: compare two people's charts (synastry) from their birth data. The two-person framing clearly distinguishes it from natal_chart, and the description names the output domain immediately.
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 implied by 'Compare two people's charts (synastry)' and the birth-data scope, but it never explicitly says when to choose this over natal_chart or search_places, nor any exclusions. The 'no compatibility score' statement sets expectations but is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
natal_chartNatal chartARead-onlyIdempotentInspect
Calculate a real natal (birth) chart from a birth date, optional birth time and a city. Returns the Sun, Moon and rising signs, every planet with sign, degree and house, the five tightest aspects, an element and modality summary, and a link to the free full chart with the wheel on lunonis.com. Calculated in-house with an ephemeris (tropical zodiac, Placidus houses); nothing is stored. If the city name matches several places it returns status "ambiguous_place" with candidates: ask the user which one, then call again with that id as place.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date, YYYY-MM-DD (1900-2100) | |
| lang | No | Language of the returned links (site language code). Default en. | |
| time | No | Birth time, 24-hour HH:MM local time. Omit if unknown: the rising sign and houses are then left out, never guessed. | |
| place | Yes | Birth city name (e.g. "Lviv" or "Lviv, Ukraine"), or a place id from search_places. A name shared by several cities returns candidates to choose from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this read-only and idempotent, but the description adds substantive context: in-house ephemeris calculation, tropical zodiac and Placidus houses, and that 'nothing is stored'. It also discloses the ambiguous_place response branch, which the annotations cannot express. No contradiction with the read-only/idempotent hints.
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 core action, then the return inventory, then the ambiguous-place rule. The return enumeration is long but each item is meaningful; slightly dense, though nothing is 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, so the description carries the burden of describing returns, which it does comprehensively (signs, planets, aspects, element/modality summary, link). Combined with the ambiguity workflow and the unknown-time rule, an agent has everything needed to call and handle results 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; the description earns extra by explaining that omitting 'time' suppresses rising sign and houses rather than guessing, and that 'place' accepts either a city name or an id from search_places. Minor gap: it never mentions the lang parameter or its effect on returned links.
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 ('Calculate a real natal (birth) chart') plus the exact inputs, then enumerates return contents so an agent knows precisely what it gets back. It is clearly distinct from the sibling search_places (which only resolves locations) and compatibility (which is never confused with chart calculation).
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 explicit operational guidance: omit time when unknown (houses/rising omitted, 'never guessed'), and on status "ambiguous_place" ask the user and re-call with the chosen id as 'place'. It does not explicitly contrast with the compatibility sibling, so it stops 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.
search_placesSearch placesARead-onlyIdempotentInspect
Find birth cities by name. Returns up to 6 candidates { id, name, region, country }, the biggest first. Use it to disambiguate a city, then pass the chosen id as the place of natal_chart or compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | City name, at least 2 characters (e.g. "Paris") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so safety is covered. The description adds genuinely new behavioral context: the result cap of 6 candidates and the 'biggest first' ordering, which an agent needs to know to decide whether disambiguation is even necessary. It does not discuss what happens when no match is found, 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?
Three short sentences, front-loaded with purpose, then return shape, then routing. Every sentence carries distinct information with no repetition of the title or 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?
No output schema exists, yet the description fully characterizes the return value (count cap, ordering, fields). Combined with annotations covering read-only and idempotency, an agent has everything needed to call this 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 description coverage is 100% and the single parameter already documents the same constraint (min 2, max 80, city name with an example). The description's 'by name' phrasing adds no syntax or format detail beyond the schema, 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 ('Find birth cities by name'), describes the return payload with field names and ordering, and explicitly separates itself from siblings by naming natal_chart and compatibility as downstream consumers. An agent can tell what this does and what it is not 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?
Gives clear usage context: use it to disambiguate a city, then pass the chosen id to natal_chart or compatibility. That names the workflow and the follow-on tools. It does not state when not to use it (e.g. when the id is already known), so it stops short of a 5.
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.
3 tool updates
- First observed
compatibility - First observed
natal_chart - First observed
search_places
Related MCP Connectors
Swiss Ephemeris astrology: natal charts, transits, synastry, solar returns and astrocartography.
Astrology charts, transits and eclipses from NASA JPL data, 13,200 BC to AD 17,191. Free, no key.
Ephemeris natal & mundane charts, Vimshottari Dasha, transit horoscopes, Horas, and Vedic yogas.
Astrology charts and classical techniques: natal, transits, horary, primary directions
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA free, read-only astrology server that computes natal charts with Placidus houses, daily and weekly transits, and synastry comparisons from birth date, time and place, along with plain-language readings, chart images and shareable X cards. It also generates sun-sign readings and festive star cards, plus playful matches against a list of famous people, without login, payment or stored user data.78 npmMIT
- AlicenseNot gradedqualityDmaintenanceCalculates astrological birth charts including planetary positions, house placements, and aspects based on birth date, time, and location.1,472 npm1MIT
- AlicenseAqualityDmaintenanceCalculates astrological natal charts with high precision using Swiss Ephemeris, supporting multiple house systems and location inputs.224 npm5AGPL 3.0
- AlicenseAqualityAmaintenanceVedic and Western astrology for AI agents: 103 read-only tools for natal charts, dasha, kundali matching with Rajju and Vedha vetoes, panchanga, numerology and tarot, backed by Swiss Ephemeris and verified against NASA JPL Horizons.103MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.