Astro Agents - deterministic Western + Vedic astrology
Server Details
Natal charts, transits, kundli, dashas, panchang, Gun Milan. JPL DE440, no LLM, hashed.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- aidatatools-dev/astro-agents-mcp
- GitHub Stars
- 0
TDQS
Scored across 16 tools
Most tools target distinct computations (aspects, natal_chart, kundli, transits, etc.), but there is overlap between kundli and kundli_full (the latter includes all of the former plus divisional charts), and between natal_chart and aspects (natal_chart already includes aspects). An agent must read descriptions carefully to choose the minimal correct tool.
Mixed conventions: many snake_case nouns (planet_positions, natal_chart, resolve_birth_time), some single words (aspects, transits, doshas, kundli), and one with a suffix (kundli_full). No consistent verb_noun pattern; names are mostly resource-oriented but not uniform.
16 tools for a full astrology API covering Western, Vedic, time resolution, and verification is well-scoped; each tool serves a clear computational purpose without excessive granularity.
Covers a wide range of astrology needs: Western natal/aspects/transits/synastry, Vedic kundli/dashas/doshas/panchang/gun_milan, time resolution, and verification. No obvious missing operations for the stated deterministic astrology domain.
Available Tools
16 toolsaspectsAspectsARead-onlyIdempotentInspect
Aspects (with orb, exactness, applying/separating) for a moment, or for any longitudes you supply. Either give a moment (datetime, optional place) and get the aspects among all planets, or give 'longitudes' {name: degrees} and get the pure geometry. Orbs are explicit and overridable. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.02 per call via REST POST https://astro-agents-api.vercel.app/v1/western/aspects (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | No | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | No | Decimal degrees, east positive. | |
| longitudes | No | Optional {name: degrees} or {name: {longitude, speed}}; when given, no ephemeris is used. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering read-only, idempotent, and closed-world behavior, the description adds useful context: deterministic JPL DE440 calculation, no LLM involvement, result SHA-256 hashing, pricing, and endpoint details. It does not describe the full return shape beyond the hash, but the safety and determinism profile is well communicated.
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 front-loaded with purpose and usage, then adds behavioral and pricing context. It is reasonably tight, though the REST endpoint and pricing sentence would not strictly be needed if the tool is already invocable through the MCP interface.
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 10-parameter tool with no required arguments and no output schema, the description covers the two main input modes, orb overridability, determinism, and result hashing. It omits detail on the exact returned aspect structure and default behavior when no input is supplied, but the rich schema reduces the burden on the description.
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 90%, so the schema already carries the parameter meaning. The description adds only marginal clarification—such as orbs being explicit and overridable and the longitudes {name: degrees} form—which mostly repeats what the schema already 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 states a specific resource—aspects—and specifies what they are computed for (a moment or supplied longitudes). It clearly distinguishes the tool's output focus from generic chart or transit tools, though it does not name any sibling tool explicitly.
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 two clear usage modes: provide a moment (datetime and optional place) to get aspects among planets, or provide longitudes for pure geometry. It does not state when not to use it or name alternative sibling tools, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
astro_catalogCatalog (free)ARead-onlyIdempotentInspect
Free. Lists every astrology endpoint with price, input schema and an example request. Call this first to pick the right tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 non-obvious context: the tool is free and the response contains pricing plus an example request per endpoint. It does not describe the response shape beyond that, but for a zero-parameter static listing there is little else to disclose.
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 clauses, zero waste, with the 'Free' qualifier and the call-first directive front-loaded. 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?
With no output schema, the description carries the burden of explaining returns and does so (price, input schema, example request). For a zero-param catalog tool with full annotation coverage, 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?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs.
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 ('Lists') and resource ('every astrology endpoint') and enumerates what each entry contains (price, input schema, example request). It is unmistakably the discovery/meta tool among computation siblings like natal_chart and transits.
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 sequencing directive: 'Call this first to pick the right tool,' which is exactly the decision rule an agent needs. It does not state when-not to use it (e.g., when you already know the endpoint), but the positive guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doshasDoshasARead-onlyIdempotentInspect
Manglik (Kuja), Kaal Sarp and Sade Sati / Dhaiya, each with the exact rule applied and dates. Manglik from lagna, Moon and Venus with severity and commonly cited cancellations; Kaal Sarp with type and direction (partial cases flagged); Sade Sati cycles and Dhaiya phases with start/end dates over 100 years, plus the status on a given date. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.15 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/doshas (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| on_date | No | YYYY-MM-DD (UTC): also report what is active on this date. | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, closed-world, and idempotent behavior, and the description adds substantial extra context: deterministic JPL DE440 computation with no LLM, a meta.result_sha256 for verification, and the pricing/payment model ($0.15 per call via x402 or MPP, first 3 free). It stops short of describing error handling or rate limits beyond price, so 4 rather than 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 description is dense but front-loads the substantive output content first, then the operational meta (determinism, hash, pricing). Every sentence carries information, though the pricing/REST-URL sentence is somewhat promotional and could be tighter.
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 10-parameter, nested-schema tool with no output schema, the description does the important work of enumerating what results contain (rule applied, dates, severity, cancellations, types, directions, 100-year cycles) and the verification hash. It is largely complete, though a brief note on output shape or failure modes would close the remaining 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 90% with 10 parameters including a nested options object, so the schema already carries most parameter meaning. The description only loosely maps to parameters (e.g. 'the status on a given date' for on_date, 'start/end dates over 100 years') without adding syntax or semantics beyond what the schema provides, making the baseline 3 appropriate.
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 three specific analyses (Manglik/Kuja, Kaal Sarp, Sade Sati/Dhaiya) with their sub-details (severity, cancellations, type/direction, start/end dates), which is a precise verb+resource statement. It clearly separates this tool from siblings like kundli, natal_chart, or vedic_report by scoping it to dosha-specific computations.
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 the content (use this for dosha analysis) and the description notes the 'on a given date' mode and the free first 3 calls, but it never states when to prefer this over kundli, vedic_report, or other siblings, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gun_milanGun Milan (Ashtakoota matching)ARead-onlyIdempotentInspect
36-point Ashtakoota marriage compatibility: all 8 kootas with reasons, doshas and Manglik check. Varna, Vashya, Tara, Yoni, Graha Maitri, Gana, Bhakoot and Nadi scored from both Moons, each with the attributes and rule behind the score, Nadi/Bhakoot dosha flags with commonly cited cancellations, and both partners' Manglik status. Boy = person_a, girl = person_b by convention. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.25 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/gun-milan (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | ||
| person_a | Yes | Groom / boy (traditional convention). | |
| person_b | Yes | Bride / girl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-open-world, but the description adds substantive behavioral facts: deterministic JPL DE440 computation with no LLM, a per-result meta.result_sha256 for verification, $0.25 per call, the first 3 calls free, and the REST endpoint with x402/MPP payment. That is real added context beyond the annotations.
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?
Purpose and scope are front-loaded in the first sentence, and the enumerations of kootas and outputs are dense but load-bearing. The commercial tail (price, URL, free calls) is somewhat promotional yet operationally relevant, so it mostly 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?
With no output schema, the description carries the return-value burden and does so well: it lists the 8 scored kootas, per-koota attributes/rules, dosha flags with cancellations, Manglik status, and the sha256 hash. It is complete enough to call correctly, though the options object and any result shape details remain unspecified.
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 67% and nested objects are documented in the schema itself (the person_a/person_b descriptions already state groom/boy and bride/girl). The description largely restates that convention and says nothing about the 'options' object (ayanamsa, node_type, house_system), so it adds little beyond the structured fields. 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 technique (36-point Ashtakoota marriage compatibility) and enumerates the exact outputs: all 8 kootas with reasons, dosha flags, cancellations, and Manglik status for both partners. This clearly distinguishes it from siblings like kundli (individual chart) and synastry (a different compatibility system).
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 supplies the crucial convention that boy = person_a and girl = person_b, plus pricing/free-call context, which helps an agent invoke it correctly. However it never states when to prefer this over the sibling 'synastry' or 'kundli' tools, so routing is left to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kundliKundli (Vedic birth chart)ARead-onlyIdempotentInspect
Sidereal D1 + D9: lagna, 9 grahas with rashi, nakshatra, pada, house, dignity, combustion, bhavas. The Jyotish birth chart: ayanamsa (Lahiri default; Raman, KP, Yukteshwar, Fagan-Bradley, True Chitrapaksha), lagna, grahas with rashi, nakshatra/pada/lord, bhava, dignity (exalted, debilitated, moolatrikona, own sign), retrograde and combustion, house table with lords and occupants, and the Navamsa (D9). Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.15 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/kundli (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds substantial behavior beyond them: determinism via JPL DE440 with no LLM, a per-result meta.result_sha256 for verification, historical timezone/DST/LMT resolution, the TIME_UNKNOWN warning path, and the $0.15 pay-per-call model with the first 3 calls free.
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?
It is front-loaded with the output inventory and stays information-dense, but the graha/rashi/nakshatra/bhava list is effectively stated twice (once in the first sentence, again in the longer second sentence), which is mild waste for a description of this length.
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 9-parameter, nested-option tool with no output schema, the description adequately covers outputs, determinism, cost, and the hash for verification. It does not address failure modes beyond the TIME_UNKNOWN case or the exact shape of the returned chart, but nothing critical for calling it 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 89%, so the schema already documents nearly every parameter, including the ayanamsa enum, node_type, house_system, time_basis, ambiguous_time, and time-omission behavior. The description's ayanamsa list (Lahiri default; Raman, KP, Yukteshwar, Fagan-Bradley, True Chitrapaksha) largely restates the enum rather than adding syntax or format 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?
The description names a specific resource and enumerates its concrete outputs (lagna, 9 grahas with rashi/nakshatra/pada/house/dignity, bhavas, D9 Navamsa), so an agent knows exactly what it produces. However, it never distinguishes itself from the sibling kundli_full, and the D1/D9 vs. 'full' split is left for the agent to guess.
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?
There is no when-to-use guidance: nothing says when to prefer this over kundli_full, natal_chart, or panchang, nor what prerequisites (birth data completeness) are needed. The only operational note is pricing/endpoint, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kundli_fullKundli with all 16 vargasARead-onlyIdempotentInspect
The kundli plus all Shodashavarga divisional charts D1..D60 (Parashara rules). Everything in /vedic/kundli plus D1, D2, D3, D4, D7, D9, D10, D12, D16, D20, D24, D27, D30, D40, D45 and D60, each with its lagna, placements and house table. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.32 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/kundli-full (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, closed-world), but the description adds substantial traits beyond them: deterministic JPL DE440 engine with no LLM, a per-result meta.result_sha256 for verification, per-call pricing, and the payment mechanisms. That is exactly the behavioral context an agent needs before committing to a paid, deterministic call.
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?
Four sentences, front-loaded with what is computed and which charts are included, then determinism/hash, then pricing/access. The varga enumeration is long but it is the core payload of the tool and earns its space.
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 supplies the return shape (per-varga lagna, placements, house table), the verification hash, the engine, and cost/access details. For a 9-parameter paid tool with a nested options object, this leaves 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 description coverage is 89%, so the schema already documents date/time/datetime, timezone, time_basis, ambiguous_time, coordinates and the nested options object (ayanamsa, node_type, house_system). The description adds no parameter-level meaning beyond noting Parashara rules, 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 resource (kundli plus all Shodashavarga charts D1..D60) with a clear scope, and explicitly distinguishes itself from the sibling by saying it is 'everything in /vedic/kundli plus' the 16 vargas. An agent can route between kundli and kundli_full 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?
The 'plus' framing implies the selection condition: use this when the full 16-varga set is required, otherwise the cheaper kundli. It also gives practical invocation context (REST endpoint, x402/MPP payment, 3 free calls). However it never states an explicit when-not-to-use or names the alternative outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nakshatrasNakshatrasARead-onlyIdempotentInspect
Sidereal nakshatra, pada and lord of every graha; janma nakshatra with gana, yoni, nadi, varna. The 27 lunar mansions for each of the 9 grahas at a moment (Lahiri by default, 6 ayanamsas), with the birth star's attributes used in matching. Or pass 'longitude_sidereal' for a direct lookup. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.02 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/nakshatra (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | No | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | No | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
| longitude_sidereal | No | Optional direct lookup, degrees 0-360. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, and the description adds substantial context beyond them: determinism source (JPL DE440, no LLM), the meta.result_sha256 verification artifact, default ayanamsa (Lahiri) and the six available, plus pricing and a free-call allowance. That is real behavioral disclosure for a paid, verifiable computation.
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 purpose and output content, then defaults and the lookup alternative. It is dense but the trailing pricing/endpoint sentence is commercial plumbing rather than tool-selection information, slightly diluting an otherwise efficient block.
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 10-parameter tool with nested options and no output schema, the description usefully enumerates returned content (pada, lord, gana, yoni, nadi, varna, janma nakshatra) and the default ayanamsa. It leaves the exact response shape and warning fields (e.g., TIME_UNKNOWN) to the schema, which is acceptable but not exhaustive.
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 90%, so the schema already documents nearly every parameter, including the enum options and the longitude_sidereal field. The description restates the ayanamsa default and the direct-lookup path but adds no format or syntax 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+resource: 'Sidereal nakshatra, pada and lord of every graha' plus the janma nakshatra attributes and the 27 lunar mansions across 9 grahas. An agent can distinguish this nakshatra-focused tool from generic chart siblings like kundli or planet_positions 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 a concrete alternative input mode: 'Or pass longitude_sidereal for a direct lookup,' which tells the agent it can bypass date/time entirely. However, it never states when to prefer this over siblings such as planet_positions or kundli for related calculations, so routing guidance is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
natal_chartWestern natal chartARead-onlyIdempotentInspect
Complete natal chart: planets in signs and houses, ascendant, MC, 11 house systems, aspects, summary. Everything a natal reading needs, computed exactly: positions, house cusps (Placidus by default; Koch, Whole Sign, Equal, Porphyry, Regiomontanus, Campanus, Topocentric, Alcabitius, Morinus, Meridian), ascendant/MC/DSC/IC, aspects with orbs and applying/separating state, element and modality balance, chart ruler, sect and Part of Fortune. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.06 per call via REST POST https://astro-agents-api.vercel.app/v1/western/natal (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, but the description adds genuinely new behavioral context: deterministic JPL DE440 computation with no LLM, a meta.result_sha256 for verification, $0.06 pricing, and x402/MPP payment. It stops short of covering error behavior or rate limits beyond the free-call note.
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 long but front-loaded with the payload contents before determinism and pricing details, and almost every clause carries information. Minor marketing padding ('Everything a natal reading needs') and some repetition of schema-listed house systems keep it from a 5.
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 complex 9-parameter tool with no output schema, the description usefully enumerates return contents (positions, cusps, aspects with applying/separating state, element/modality balance, sect, Part of Fortune) and flags the result hash. It leaves out any mention of warnings (e.g. TIME_UNKNOWN is only in the schema) and error handling, but is otherwise sufficient.
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 89%, so the schema already documents all 9 parameters including defaults, enums, and the nested options object. The description restates defaults (Placidus, orbs, aspects) and the 11 house systems but adds no syntax or constraint detail beyond what the schema provides, 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?
The description names a specific resource and enumerates its contents precisely ('planets in signs and houses, ascendant, MC, 11 house systems, aspects, summary'), so an agent knows exactly what it computes. It is labeled 'Western' against Vedic siblings like kundli/kundli_full, but it never explicitly names a sibling or routes between them, so differentiation stays implicit rather than stated.
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: 'Everything a natal reading needs' signals that this is the comprehensive chart call, but there is no when-to-use/when-not statement and no comparison to siblings such as planet_positions or aspects. The pricing/payment sentences describe access mechanics, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
panchangPanchangARead-onlyIdempotentInspect
Tithi, vara, nakshatra, yoga, karana with the exact time each ends, plus sunrise and sunset. The Hindu almanac for any moment and place: the five limbs with their end times (to the minute), paksha, Moon and Sun rashi, sunrise/sunset, and the vara by the sunrise-to-sunrise rule. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.02 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/panchang (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering readOnly/idempotent/closed-world, the description still adds substantial context: determinism (JPL DE440, no LLM), a verifiable meta.result_sha256, cost ($0.02/call), the payment mechanism (x402 or MPP), and a free-call allowance. These are exactly the operational facts an agent cannot get from structured fields.
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?
It is front-loaded with what the tool computes, which is good, but the first and second sentences restate the same content ('exact time each ends' vs 'with their end times (to the minute)'), and the pricing/endpoint sentence is dense with semicolon-separated fragments. It is informative but not tight.
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 9-parameter, no-output-schema tool, the description does describe the returned content (the five limbs with end times, paksha, rashi, sunrise/sunset) and the determinism/hash guarantees, so an agent can anticipate results. Gaps remain around error/warning behavior (e.g. TIME_UNKNOWN) and pagination-free large responses, but the core is covered.
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 89%, so parameters are largely self-documenting and the baseline is 3. The description adds only marginal parameter meaning ('the vara by the sunrise-to-sunrise rule') and does not clarify the date/time vs datetime exclusivity or the options object 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 the concrete outputs (tithi, vara, nakshatra, yoga, karana with end times, paksha, Moon/Sun rashi, sunrise/sunset), so an agent knows exactly what this computes. It does not, however, distinguish itself from the similarly-scoped siblings (kundli, natal_chart, nakshatras), so an agent must infer the boundary.
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?
There is no when-to-use or when-not-to-use guidance relative to the 16 sibling tools, nor any stated prerequisites beyond the implicit latitude/longitude requirement. Pricing and endpoint details are present, but selection guidance is entirely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planet_positionsPlanetary positionsARead-onlyIdempotentInspect
Tropical (or sidereal) longitudes, latitudes, speeds and retrograde flags of Sun..Pluto, nodes, Lilith. Geocentric apparent positions from NASA/JPL DE440 for any moment 1800-2200, with sign, degree, element, modality, daily speed and retrograde status. Location is optional (only used to interpret a local time). Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.01 per call via REST POST https://astro-agents-api.vercel.app/v1/western/positions (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | No | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | No | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly, idempotent, non-open-world), but the description adds substantial traits beyond them: JPL DE440 as the ephemeris source, determinism with no LLM, a verifiable meta.result_sha256 on every result, the 1800-2200 validity window, and the cost model ($0.01/call, x402 or MPP, first 3 free). These are exactly the operational facts an agent needs before invoking a paid, verifiable tool.
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, front-loaded with what is computed before moving to source, location handling, determinism and pricing. The pricing/payment detail is lengthy but earns its place for an agent budgeting calls; the celestial-body enumeration is somewhat redundant with the schema's points enum.
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 return-value burden well, listing sign, degree, element, modality, daily speed, retrograde status and the result hash. Combined with the data range, determinism guarantee and cost, 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 89%, so the schema already documents most parameters. The description still adds meaning beyond it by clarifying that location inputs are optional and serve only to interpret a local time, which disambiguates latitude/longitude/timezone behavior. It does not add detail on the options object's aspects, orbs or house_system parameters.
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: computes tropical/sidereal longitudes, latitudes, speeds and retrograde flags for Sun..Pluto, nodes and Lilith. The scope (geocentric apparent positions, 1800-2200) clearly separates it from natal_chart, transits and aspects siblings.
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 explains that location is optional and only used to interpret a local time, which implies usage context, but it never states when to prefer this tool over siblings like natal_chart, transits or aspects, nor any exclusions. Usage is left to inference from the scope statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_birth_timeBirth time resolverARead-onlyIdempotentInspect
Local birth time + place -> exact UT, historical UTC offset, Delta T, Local Mean Time, true solar time. The step LLMs most often get wrong. Resolves the IANA time zone from coordinates, applies the offset in force on that date (historical DST, Local Mean Time before standard time), flags ambiguous or non-existent local times instead of guessing, and returns Julian Days (UT/TT), Delta T, Local Mean Time, true (apparent) solar time and the equation of time. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.01 per call via REST POST https://astro-agents-api.vercel.app/v1/time/resolve (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | No | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | No | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, not open-world), and the description adds substantial behavioral context beyond them: deterministic JPL DE440 computation with no LLM, historical DST/LMT handling, ambiguity flagging instead of guessing, a meta.result_sha256 on every result, and $0.01/call pricing with 3 free calls plus the REST endpoint. It does not cover rate limits or failure modes in detail, so 4 rather than 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 value is front-loaded in a single dense first sentence, and subsequent sentences cover method, ambiguity handling, outputs and pricing. The output list is effectively stated twice (first sentence and the 'returns Julian Days...' sentence), which is minor wasted space in an otherwise efficient description.
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 fully carries the return-value burden by enumerating Julian Days (UT/TT), Delta T, LMT, true solar time and the equation of time. Combined with the all-optional 8-parameter schema and its own fallback rules, an agent has everything needed to call this 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 documents every parameter including the timezone-from-coordinates fallback and the ambiguous_time default. The description largely restates these behaviors (timezone resolved from coordinates, historical offset applied) without adding new syntax or format guidance, 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?
The opening line states a specific transformation (local birth time + place -> exact UT, UTC offset, Delta T, LMT, true solar time), which is a precise verb+resource statement no sibling tool covers. It also carves out its niche versus the chart-producing siblings by calling itself 'the step LLMs most often get wrong.'
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 clearly frames the context (use it to correctly convert a local birth time before other work) and notes behaviors that affect invocation, such as flagging ambiguous/non-existent times rather than guessing. It never names an alternative or an explicit when-not, 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.
synastrySynastryARead-onlyIdempotentInspect
Relationship comparison: cross-aspects, house overlays both ways, composite midpoints. Two natal charts compared: every cross-aspect with orbs, where each person's planets fall in the other's houses, harmonious/challenging counts, and composite (midpoint) positions and angles. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.12 per call via REST POST https://astro-agents-api.vercel.app/v1/western/synastry (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | ||
| person_a | Yes | ||
| person_b | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety and idempotency (readOnlyHint, idempotentHint, openWorldHint=false), and the description adds substantive context beyond them: deterministic computation via JPL DE440 with no LLM, a verifiable meta.result_sha256 on every result, a $0.12 per-call price, the REST endpoint, and x402/MPP payment plus 3 free calls. It does not discuss latency, failure modes, or rate limits beyond the free tier.
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, data content front-loaded, no filler. The pricing/endpoint sentence is longer than needed for a tool description but is legitimately useful invocation context for an agent, so it earns its place on balance.
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 return-value burden well: it names the aspect/overlay/composite payloads, the counts, and the result hash. Combined with the determinism and cost disclosures, an agent can call it correctly; only error/edge-case behavior is undocumented.
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?
Reported schema description coverage is 0% at the parameter level, so the description is expected to compensate, yet it explains no parameter — time_basis, ambiguous_time, orbs, points, zodiac, and house_system are left entirely to the nested schema. Terms like 'with orbs' hint at the orbs control but add no syntax or defaults.
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 verb+resource (relationship comparison of two natal charts) and enumerates exactly what is produced: cross-aspects with orbs, mutual house overlays, harmonious/challenging counts, and composite midpoints. This cleanly separates it from single-chart siblings like natal_chart and aspects.
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 requirement of two birth datetimes implies the two-person scenario, but the description never explicitly states when to choose this over natal_chart, aspects, or gun_milan, nor any exclusion. Usage is inferable from the resource, not from stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transitsTransitsARead-onlyIdempotentInspect
Transits to a natal chart at a moment, and exact hit times over a window of up to a year. 'transit': aspects from the sky at a moment to every natal point, with the natal house each transiting planet occupies. 'window': the exact UTC minute every transiting planet perfects each aspect to each natal point over up to 366 days (62 with the Moon), retrograde passes included. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.08 per call via REST POST https://astro-agents-api.vercel.app/v1/western/transits (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| natal | Yes | Birth data. | |
| window | No | UTC dates YYYY-MM-DD, at most 366 days apart. | |
| options | No | ||
| transit | No | The transit moment. A bare local time is read in the natal place's zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/closed-world, and the description goes well beyond them: deterministic JPL DE440 computation with no LLM, retrograde passes included, a per-result meta.result_sha256, the pricing model, and the free-call allowance. This is exactly the extra behavioral context annotations cannot carry.
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?
Four dense, front-loaded sentences: mode definitions come first, then determinism/provenance, then the pricing/invocation detail. No sentence is filler, and the two modes are the leading structure.
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 nested four-parameter tool with no output schema, the description covers what matters: what each mode returns (per-planet natal house; exact perfection minute), the window bound, provenance via hash, and cost/access. 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 75%, so the schema does much of the work, but the description adds real meaning: the 366-day / 62-day-with-Moon window bound and the guarantee that exact UTC minute hits, including retrograde passes, are returned. It does not explain the options object or the natal fields, which the schema already documents.
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 verb+resource (compute transits to a natal chart) and clearly splits the tool into two modes, 'transit' (aspects at one moment) and 'window' (exact perfection times). It is precise about scope, but it never distinguishes itself from siblings like 'aspects', 'synastry' or 'natal_chart', which an agent could easily confuse with 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?
The mode selection is explained by argument ('transit' vs 'window'), and the window limits (366 days, 62 with the Moon) tell the agent when the window mode is viable. There is no explicit when-not guidance or naming of an alternative sibling tool, so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vedic_reportComplete Vedic reportARead-onlyIdempotentInspect
Kundli + Vimshottari dashas + doshas + janma panchang in one call. The full Jyotish dossier for one person in a single deterministic call: everything in /vedic/kundli, /vedic/dashas (2 levels, running periods with on_date), /vedic/doshas and the panchang at birth. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.50 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/report (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| on_date | No | YYYY-MM-DD (UTC): also report what is active on this date. | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the read-only/idempotent profile, so the description carries real extra weight: determinism source (JPL DE440, no LLM), the meta.result_sha256 provenance field, the $0.50 per-call price, the REST/x402/MPP access path, and the 'first 3 free' quota. These are exactly the operational facts an agent needs before invoking a paid, hash-verifiable tool.
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 content summary before the billing and endpoint details. It is dense but every clause (content scope, determinism, hash, price, endpoint, free tier) carries information, so the length is justified rather than padded.
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, 10 parameters, and nested options, the description supplies the key return-side signals (dasha depth levels, on_date activity, result_sha256) plus cost and access mechanics. It does not describe output shape beyond the hash, but for a deterministic bundled report this is close to sufficient.
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 90%, so the schema already documents date/time/on_date/options and their enums. The description adds only a marginal hint about on_date ('running periods with on_date') and the 2-level dasha depth, so the baseline 3 applies rather than a bonus.
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 first sentence names the specific composite content (Kundli, Vimshottari dashas, doshas, janma panchang) and frames the tool as a bundled dossier for one person. It explicitly enumerates the sibling endpoints it aggregates (/vedic/kundli, /vedic/dashas, /vedic/doshas, panchang), so an agent can distinguish it from the individual sibling tools 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?
The description makes the core selection logic clear: 'in one call' versus the enumerated per-domain endpoints, which tells the agent to prefer this when it wants the whole dossier. It stops short of an explicit when-not or a direct contrast with the similarly named sibling kundli_full, leaving that overlap to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_result_hashVerify a result hash (free)ARead-onlyIdempotentInspect
Free. Recomputes the SHA-256 of a 'result' object returned by any tool and compares it with the result_sha256 you hold, proving the result was not altered.
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes | ||
| result_sha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world behavior, so the safety profile is covered. The description usefully adds the algorithm (SHA-256), determinism, and the cost signal ('Free'), but it never states what the tool returns or what happens on a mismatch, which matters given there is no output schema.
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?
A single front-loaded sentence with no filler; the cost note leads and the mechanism follows. Slightly dense and slightly overpacked for one sentence, but 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?
With no output schema, the description should explain the return value (boolean match, error on mismatch, etc.), and it does not. It covers inputs and intent adequately but leaves the agent guessing about the response, which is a real gap for a verification 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 description coverage is 0% for two parameters, so the description must carry the load. It does clarify that 'result' is an object returned by any tool and that result_sha256 is the hash the caller holds, but it gives no encoding, casing, or format details for the hash string. Minimal compensation for the coverage gap.
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 with the mechanism: recompute SHA-256 of a 'result' object and compare against a held hash to prove integrity. It is unmistakably distinct from every astrology-domain sibling tool, so an agent can identify 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?
The description makes the triggering condition clear: use it when you hold a result_sha256 for a result object returned by any tool and want to prove it was not altered. It does not name exclusions, but no alternative integrity-checking sibling exists, so the guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vimshottari_dashaVimshottari dashasARead-onlyIdempotentInspect
Vimshottari maha/antar/pratyantar periods with exact dates, birth balance, and the running periods. The 120-year Vimshottari sequence from the Moon's exact nakshatra position: balance at birth, all 9 mahadashas with sub-periods down to 4 levels, and (with on_date) the periods running on a date. Deterministic (JPL DE440, no LLM); every result carries meta.result_sha256. Price $0.10 per call via REST POST https://astro-agents-api.vercel.app/v1/vedic/dashas (x402 or MPP); your first 3 calls are free here.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | YYYY-MM-DD (use with 'time' instead of 'datetime'). | |
| time | No | HH:MM or HH:MM:SS, 24 h. Omit if unknown (computed at 12:00 with a TIME_UNKNOWN warning). | |
| on_date | No | YYYY-MM-DD (UTC): also report what is active on this date. | |
| options | No | ||
| datetime | No | Local birth date-time, ISO 8601: '1990-05-15T14:30' (local clock time at the place) or with an explicit offset '1990-05-15T14:30:00+02:00'. Alternative: 'date' + 'time'. | |
| latitude | Yes | Decimal degrees, north positive. | |
| timezone | No | IANA zone, e.g. 'Asia/Kolkata'. Optional: resolved from the coordinates, with the historical offset (DST, Local Mean Time) of that date. | |
| longitude | Yes | Decimal degrees, east positive. | |
| time_basis | No | What the given clock time is: civil wall-clock (default), UTC, Local Mean Time, or true (apparent) solar time. | civil |
| ambiguous_time | No | Which occurrence to use when a local time happens twice (DST fall-back). | earlier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: deterministic computation (JPL DE440, no LLM), a verifiable meta.result_sha256 on every result, and commercial terms ($0.10/call, x402/MPP payment, 3 free calls) with the REST endpoint. This tells the agent about cost, payment requirements, and result verifiability, none of which the readOnly/idempotent annotations convey. No contradiction with annotations.
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, front-loaded with the core purpose and return contents, then determinism/hash, then pricing. Every sentence carries information, though the REST URL and payment-mechanism detail make the tail denser than necessary for tool selection.
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 10 parameters, a nested options object, no output schema, and 2 required inputs, the description covers the essential capabilities and even points to result verifiability via sha256. It stops short of describing output structure or how the running-period list is formatted, but for a no-output-schema tool this is close to complete.
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 90%, so the schema already documents date/time/datetime, on_date, depth levels, and the option enums. The description restates the depth concept ('sub-periods down to 4 levels') and the on_date behavior, adding mild reinforcement but no syntax or format detail beyond the schema. Baseline 3 applies when structured fields carry the load.
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 (Vimshottari maha/antar/pratyantar periods) and enumerates exactly what is returned: birth balance, all 9 mahadashas with sub-periods to 4 levels, and periods running on a date. An agent can immediately distinguish this from siblings like kundli, nakshatras, or panchang. The scope is concrete and unambiguous.
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 implies usage via 'with on_date' for the running-periods case, and the free-tier/pricing note hints at call economics, but it never states when to pick this over kundli, kundli_full, or nakshatras, nor any prerequisite conditions. Guidance is inferable rather than explicit.
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.
16 tool updates
- First observed
aspects - First observed
astro_catalog - First observed
doshas - First observed
gun_milan - First observed
kundli - First observed
kundli_full - First observed
nakshatras - First observed
natal_chart - First observed
panchang - First observed
planet_positions - First observed
resolve_birth_time - First observed
synastry - First observed
transits - First observed
vedic_report - First observed
verify_result_hash - First observed
vimshottari_dasha
Related MCP Connectors
Vedic astrology (Jyotish): birth charts, divisional charts, dashas, yogas, transits, panchang
Sub-arcsecond astrology on NASA JPL DE440: natal, transits, Human Design, Vedic, BaZi.
Vedic kundli, panchang, dashas, nakshatras and KP charts for AI agents, one API key.
Western natal charts, horoscopes, transits and synastry for AI agents, verified vs NASA JPL.
Related MCP Servers
- 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.8103MIT
- AlicenseAqualityAmaintenanceHosted Streamable HTTP MCP server for Vedic astrology: panchang, kundali (birth chart), matchmaking, dashas, doshas, muhurta and 16 tools computed by a precision astronomy engine.1736 npmMIT
- AlicenseNot gradedqualityBmaintenanceHigh-precision astrology tools for LLM agents, including natal charts, transits, progressions, synastry, and more, backed by Swiss Ephemeris.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to answer Vedic astrology questions about dashas, transits, and planetary positions using real sidereal calculations.AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.