Skip to main content
Glama

Jyotish — Vedic astrology for AI agents

Server Details

Vedic astrology for AI agents: chart facts, panchang windows, and Guna Milan compatibility.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.1% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Each tool has a distinct primary purpose: ask_jyotish for LLM synthesis, and the rest for deterministic computations like chart facts, dasha, doshas, forecast, panchang, varga, and compatibility. However, get_chart_facts, get_dasha, and get_forecast all overlap in providing dasha-related information, which could cause occasional misselection. Descriptions help clarify scope, but the overlap prevents a perfect score.

Naming Consistency4/5

Most tools follow a clear get_<resource> pattern (get_chart_facts, get_dasha, get_doshas, get_forecast, get_panchang, get_varga), which is consistent and readable. The two outliers are ask_jyotish, which fits a verb_noun pattern but uses 'jyotish' as a domain rather than a resource, and guna_milan, which is a noun phrase without a verb. These minor deviations are understandable given the domain but slightly break the pattern.

Tool Count5/5

With 8 tools, the set is well-scoped for a Vedic astrology service, covering chart facts, dasha, doshas, forecast, panchang, varga, compatibility, and a synthesis Q&A. Each tool earns its place by addressing a distinct analytical need. The count is within the ideal range and not excessive or thin.

Completeness4/5

The surface covers most core Vedic astrology operations: birth chart facts, dasha timelines, dosha screening, forecasts, panchang, divisional charts, compatibility, and a grounded synthesis tool. Minor gaps exist, such as a dedicated tool for current planetary transits at a given time or muhurta (electional astrology), but these are not critical for the primary use cases. Overall, the set is quite complete for the stated domain.

Available Tools

8 tools
ask_jyotishAInspect

Grounded synthesis answer to a question, computed from the birth chart through the same accuracy-gated path as the retail chat endpoint (chart-anchor check and rewrite retry inside run_reading). The response envelope carries citation_status and accuracy-gate notes. lang: en or hi (default en).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNo
questionYesThe question to answer from the chart.
birth_dataYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the accuracy-gated path, including chart-anchor check and rewrite retry, and mentions the response envelope includes citation_status and accuracy-gate notes. This gives meaningful behavioral context beyond the schema, though it doesn't cover failure modes or performance characteristics.

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

Conciseness4/5

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

The description is a single, compact paragraph that leads with the core purpose, then adds accuracy details, response envelope notes, and lang. Every sentence adds value without redundancy, though it could be slightly better structured with bullets for readability.

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?

The tool has a nested birth_data object and no output schema. The description explains the response envelope concept but does not detail the structure or potential error conditions. While required parameters are in the schema, the absence of an output schema makes the description incomplete for an agent expecting a precise return format.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'question' has a description among top-level params). The description adds nothing about 'question' or 'birth_data' semantics; it only mentions 'lang' which is already enumerated in the schema. With low coverage, the description fails to compensate, leaving parameter meaning underspecified.

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

Purpose5/5

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

The description clearly states the tool answers a question via grounded synthesis from the birth chart, and distinguishes it from siblings by emphasizing 'synthesis' rather than raw facts (get_chart_facts), panchang (get_panchang), or compatibility (guna_milan). The verb 'answer' and resource 'birth chart' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for synthesis questions but never explicitly contrasts with sibling tools or states when not to use it. No alternative tool is named, leaving the agent to infer based on the phrase 'grounded synthesis answer'. This is adequate but not explicit guidance.

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

get_chart_factsAInspect

Deterministic Vedic chart facts for birth data: lagna, Moon sign/nakshatra, current dasha, planets in houses, house lords, dignities, combustions, D9/D10 ascendants, Sade Sati standing, yogas with classical-text citations, dasha timeline. Pure computation, no LLM. Same output as POST /api/b2b/chart-facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
tzYesUTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata).
dobYesBirth date, YYYY-MM-DD.
latYesBirth latitude, -90 to 90.
lngYesBirth longitude, -180 to 180.
tobYesBirth time, HH:MM (24h).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the disclosure burden. It clearly states determinism, pure computation, no LLM involvement, and classical-text citations for yogas, which signals reproducibility and trustworthiness. It does not discuss edge cases or error behavior, but for a pure read-only computation the key behavioral traits are disclosed.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads scope and enumerates the output types; the second adds the crucial no-LLM determinism guarantee and endpoint equivalence. Every clause earns its place.

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

Completeness4/5

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

The tool is complex and has no output schema, but the description compensates by listing the major returned categories: lagna, nakshatra, dasha, house placements, dignities, combustions, D9/D10 ascendants, Sade Sati, yogas with citations, and dasha timeline. It lacks mention of ayanamsa/house-system defaults or error scenarios, but an agent has enough context to invoke and interpret the result correctly.

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 all five parameters are already documented with formats and ranges. The description only groups them under 'birth data' and does not add semantic detail beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Deterministic Vedic chart facts for birth data' followed by a concrete enumeration of outputs such as lagna, dasha, house lords, and Sade Sati standing. It also distinguishes itself from likely LLM-based siblings with 'Pure computation, no LLM.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies clear usage: use when deterministic, reproducible chart facts are needed rather than interpretive LLM answers. 'Pure computation, no LLM' provides an implicit when-not, and 'Same output as POST /api/b2b/chart-facts' gives an integration reference, though it does not explicitly name sibling tools.

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

get_dashaBInspect

Vimshottari dasha standing and full timeline for birth data: current maha / antar / pratyantar dasha plus every maha-dasha period with start and end dates. Deterministic, no LLM. Same compute path as POST /api/b2b/dasha.

ParametersJSON Schema
NameRequiredDescriptionDefault
birth_dataYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add one genuinely useful trait: 'Deterministic, no LLM,' which tells the agent results are reproducible and not model-generated. However it omits the safety profile (implicitly a read), error behavior for invalid birth data, and any latency/rate context, so it is only partially transparent.

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

Conciseness4/5

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

Three short sentences, front-loaded on what is returned, with zero filler. The final API-parity sentence ('Same compute path as POST /api/b2b/dasha') is the weakest, but it does signal identical compute semantics for API consumers.

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?

It conveys the output content (current sub-periods plus every maha-dasha period), which is needed since there is no output schema, but it says nothing about date formatting, ordering, or how to interpret the timeline. Adequate but with clear gaps for a single-param compute endpoint.

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?

One nested parameter with 0% top-level description coverage, so per the rubric the description should compensate; 'for birth data' only restates the schema key. The nested fields (dob, tob, lat, lng, tz) are self-documented inside the schema, which keeps this from being a serious gap.

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

Purpose5/5

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

The description names a specific resource and scope: Vimshottari dasha standing (current maha/antar/pratyantar levels) plus the full maha-dasha timeline with start and end dates. That content specification is detailed enough to tell it apart from generic siblings like get_chart_facts or get_forecast 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the input domain ('for birth data') but gives no when-to-use guidance, no exclusions, and never names an alternative such as get_forecast or get_doshas. The agent must infer that dasha-timeline questions route here.

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

get_doshasBInspect

Dosha screen for birth data: Manglik standing under both conventions (Moon and Lagna), Kaal Sarp detection, Sade Sati phase, and extra classical yogas. Deterministic, no LLM. lang: en or hi (default en). Same compute path as POST /api/b2b/doshas.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNo
birth_dataYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose two useful traits: the output is deterministic and no LLM is involved, plus parity with the REST endpoint. It does not state side effects, permissions, or whether the call is read-only, which matters less for a pure computation but is still unstated.

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

Conciseness5/5

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

Three tight sentences, front-loaded with what is computed, then determinism, then the lang parameter and endpoint parity. No filler.

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

Completeness4/5

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

There is no output schema and no annotations, but the description effectively enumerates the return content (Manglik, Kaal Sarp, Sade Sati, yogas), which is what an agent needs to know. Missing only return shape/format details, which is a minor gap for a compute-only tool.

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 0%, so the description must compensate. It adds the only real semantic beyond the schema: 'lang: en or hi (default en)' — the default value is not in the schema. The birth_data fields (dob, tob, lat, lng, tz) are documented in the schema, so the description's contribution is limited but non-zero.

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+resource (dosha screen for birth data) and enumerates the exact computations returned: Manglik under both conventions, Kaal Sarp, Sade Sati, and classical yogas. This is clearly distinguishable from siblings like get_dasha or get_chart_facts, though it never names a sibling explicitly.

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?

No when-to-use guidance, no conditions selecting this over get_chart_facts or get_dasha, and no exclusions. The 'Same compute path as POST /api/b2b/doshas' line is a routing/parity note, not usage guidance.

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

get_forecastAInspect

Structured personalized forecast for birth data — per-area tones, day calendar, ingresses, dasha standing. period: daily (optional date), weekly, monthly (optional year+month), or yearly (optional year). Deterministic engine output, no LLM narration. lang: en or hi (default en). Same compute path as POST /api/b2b/forecast.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD (daily period only).
langNo
yearNoTarget year (monthly/yearly periods).
monthNoTarget month 1-12 (monthly period only).
periodYes
birth_dataYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that output is deterministic and not LLM-narrated, and that it shares a compute path with POST /api/b2b/forecast. It does not state read-only status, authorization needs, rate limits, or error behavior.

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

Conciseness4/5

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

The purpose is front-loaded and the sentences are dense but mostly purposeful, moving from output summary to parameter conditions to engine behavior. The final API-path sentence may be extraneous for agent use, and the em-dash list is slightly choppy, but overall it is efficiently sized.

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?

For a six-parameter tool with a nested required birth_data object, no output schema, and no annotations, the description is only partially complete. It names some return components but does not fully describe the forecast output shape, and it omits guidance on alternatives or failure modes.

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

Parameters4/5

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

Schema coverage is only 50%, but the description compensates well for the key conditional parameters: it explains that date applies to daily, year+month to monthly, year to yearly, and that lang defaults to en. This adds meaning beyond the raw enum and schema descriptions, though nested birth_data fields remain undocumented in prose.

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 resource and its scope: a structured personalized forecast from birth data, with named output elements (per-area tones, day calendar, ingresses, dasha standing). It is clear what the tool does, but it does not explicitly differentiate itself from siblings like get_dasha despite mentioning dasha standing as an output component.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying deterministic engine output and no LLM narration, which helps distinguish it from a conversational sibling like ask_jyotish. However, it never states when to prefer this tool over alternatives such as get_dasha or get_panchang, nor any prerequisites or exclusions.

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

get_panchangHindu panchang for a place and dateA
Read-only
Inspect

Use when a user asks about the Hindu calendar day for a location — tithi, paksha, nakshatra, yoga, karana, vara and its lord, sunrise and sunset, plus Rahu Kaal, Yamaganda, Gulika Kaal and the Choghadiya day/night windows. Needs only a place and a date, so it works without anyone's birth details. Deterministic computation, no LLM. Same compute path as GET /api/panchang.

ParametersJSON Schema
NameRequiredDescriptionDefault
tzYesUTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata).
latYesBirth latitude, -90 to 90.
lngYesBirth longitude, -180 to 180.
dateNoYYYY-MM-DD (default: local today at the location).

Output Schema

ParametersJSON Schema
NameRequiredDescription
varaNo
yogaNo
tithiNo
karanaNo
pakshaNo
sunsetNo
on_dateNo
sunriseNo
nakshatraNo
tithi_numNo
vara_lordNo
choghadiyaNo
inauspicious_windowsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/non-destructive/openWorld=false, so safety is covered. The description adds genuinely new behavioral context beyond them: deterministic computation with no LLM, the fact that only place and date are required, and equivalence to GET /api/panchang.

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

Conciseness4/5

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

Front-loaded with the 'Use when' trigger, then the output inventory, then the input requirement. The long enumeration of computed fields is dense but each item is a distinct returnable quantity, so little is wasted; the trailing API-path sentence is the weakest.

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

Completeness5/5

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

An output schema exists, so return shape needn't be explained, yet the description still tells the agent what the computation yields and that no birth data is needed. For a read-only, deterministic, single-purpose tool, nothing needed to invoke it correctly is missing.

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

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 already documents lat, lng, tz and the date default. The description reinforces 'needs only a place and a date' and that birth details are unnecessary, but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

The description names a specific verb+resource ('Hindu calendar day for a location') and enumerates exactly what is computed (tithi, paksha, nakshatra, yoga, karana, vara, sunrise/sunset, Rahu Kaal, Choghadiya). An agent can distinguish it from get_chart_facts or get_dasha, which concern birth details rather than a calendar day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger is given ('Use when a user asks about the Hindu calendar day for a location'), plus the key disambiguator that it needs no birth details, which routes it away from the natal-chart siblings. It stops short of naming a specific alternative tool to prefer in an overlapping case, so not a 5.

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

get_vargaBInspect

Divisional chart (varga) placements for birth data — all sixteen supported divisions d1,d2,d3,d4,d7,d9,d10,d12,d16,d20,d24,d27,d30,d40,d45,d60. Deterministic, no LLM. Same compute path as POST /api/b2b/varga.

ParametersJSON Schema
NameRequiredDescriptionDefault
vargaYes
birth_dataYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral burden, and it does disclose two useful traits: the result is deterministic and LLM-free, and it shares a compute path with the /api/b2b/varga endpoint. It says nothing about error behavior, required auth, or how results are structured per division.

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

Conciseness4/5

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

Three short sentences, front-loaded with the purpose before the operational notes. The enumeration of sixteen divisions is verbose but mirrors a real constraint; otherwise there is no filler.

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?

For a two-parameter compute tool with a nested required birth_data object, no output schema, and no annotations, the description covers purpose and determinism but omits return shape and validation/error expectations. Adequate but with clear gaps.

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?

The description lists the sixteen division codes, but those are already the enum values in the schema, so the added value is minimal. It says nothing about the birth_data object (dob/tob/lat/lng/tz) or the tz offset-vs-IANA duality, though those nested fields do carry their own schema descriptions.

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?

The description names a specific resource (divisional/varga chart placements) and scope (all sixteen divisions), so an agent knows exactly what is computed. It does not explicitly contrast itself with siblings like get_chart_facts or get_dasha, but the 'varga' framing is distinctive enough to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool is for varga/divisional charts as opposed to the rasi chart or dasha tools. There is no explicit statement of when to call this versus get_chart_facts, nor any prerequisite or exclusion guidance.

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

guna_milanAInspect

Vedic compatibility (Guna Milan / Ashtakoota) between two people, 36 points across eight kootas: varna, vashya, tara, yoni, graha_maitri, gana, bhakoot, nadi. Moon nakshatra and rashi for each native are computed from their birth data through the same chart engine as get_chart_facts — do not pass nakshatra/rashi yourself. Deterministic, no LLM. Each koota carries its score, its maximum, and a plain-language reason, so the result is auditable rather than a bare number.

ParametersJSON Schema
NameRequiredDescriptionDefault
person_aYesFirst native's birth data.
person_bYesSecond native's birth data.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses that the computation is deterministic and LLM-free, that Moon nakshatra/rashi are derived through the same chart engine as get_chart_facts, and that the output is auditable with per-koota scores, maximums, and reasons. It could add more detail about result shape or ordering, but the key behaviors are covered.

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

Conciseness5/5

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

Four sentences with no filler: purpose and field list are front-loaded, the computation rule is stated directly, the deterministic/no-LLM note is a single fragment, and the output/auditability promise earns its place.

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

Completeness4/5

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

The input schema is exhaustive and the description covers the output shape at the per-koota level (score, maximum, plain-language reason), which is important because there is no output schema. A small gap is that the top-level response shape and potential order sensitivity between person_a and person_b are not addressed, but the essential calling information is present.

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

Parameters4/5

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

The schema already provides 100% coverage of dob/tob/lat/lng/tz for person_a and person_b, so the baseline is 3. The description adds value beyond the schema by clarifying that these parameters are raw birth data and that nakshatra/rashi must not be passed, which prevents a common misuse.

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

Purpose5/5

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

The description opens with a specific domain and resource: Vedic compatibility (Guna Milan/Ashtakoota) between two people, and quantifies it as 36 points across eight named kootas. This clearly identifies the tool's purpose and distinguishes it from sibling tools like get_chart_facts (single chart), get_panchang (calendar), and ask_jyotish (query).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It conveys the intended use case — pairwise compatibility via birth charts — and gives an explicit rule: pass raw birth data and do not pass nakshatra/rashi because they are computed internally. It does not explicitly contrast against sibling tools or state when not to use it, but the context is clear enough for selection.

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.

  1. 8 tool updates
    • Changedask_jyotish3 fields changed
      • removedInput schema / properties / birth_data / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedget_chart_facts3 fields changed
      • removedInput schema / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedget_dasha3 fields changed
      • removedInput schema / properties / birth_data / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedget_doshas3 fields changed
      • removedInput schema / properties / birth_data / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedget_forecast3 fields changed
      • removedInput schema / properties / birth_data / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedget_panchang1 field changed
      • changedInput schema / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
    • Changedget_varga3 fields changed
      • removedInput schema / properties / birth_data / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
    • Changedguna_milan6 fields changed
      • removedInput schema / properties / person_a / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / person_a / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / person_a / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
      • removedInput schema / properties / person_b / properties / place
        Removed value: -{
        -  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        -  "type": "string"
        -}
      • changedInput schema / properties / person_b / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."
      • changedInput schema / properties / person_b / required
        Previous value: -[
        -  "dob",
        -  "tob"
        -]New value: +[
        +  "dob",
        +  "tob",
        +  "lat",
        +  "lng",
        +  "tz"
        +]
  2. 8 tool updates
    • Changedask_jyotish3 fields changed
      • addedInput schema / properties / birth_data / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedget_chart_facts3 fields changed
      • addedInput schema / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedget_dasha3 fields changed
      • addedInput schema / properties / birth_data / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedget_doshas3 fields changed
      • addedInput schema / properties / birth_data / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedget_forecast3 fields changed
      • addedInput schema / properties / birth_data / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedget_panchang1 field changed
      • changedInput schema / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
    • Changedget_varga3 fields changed
      • addedInput schema / properties / birth_data / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / birth_data / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / birth_data / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
    • Changedguna_milan6 fields changed
      • addedInput schema / properties / person_a / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / person_a / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / person_a / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
      • addedInput schema / properties / person_b / properties / place
        Added value: +{
        +  "description": "Birth place as a name (e.g. \"Jaipur\"). Resolved server-side through the same geocoder the bot uses, so an agent never has to guess coordinates. Supply EITHER place OR lat/lng/tz; if both are present, the explicit coordinates win.",
        +  "type": "string"
        +}
      • changedInput schema / properties / person_b / properties / tz / description
        Previous value: -"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata)."New value: +"UTC offset (e.g. 5.5) or IANA zone name (e.g. Asia/Kolkata). Required alongside lat/lng; ignored when `place` is used."
      • changedInput schema / properties / person_b / required
        Previous value: -[
        -  "dob",
        -  "tob",
        -  "lat",
        -  "lng",
        -  "tz"
        -]New value: +[
        +  "dob",
        +  "tob"
        +]
  3. 5 tool updates
    • Addedget_dasha
    • Addedget_doshas
    • Addedget_forecast
    • Changedget_panchang1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "choghadiya": {
        +      "properties": {
        +        "day": {
        +          "items": {
        +            "properties": {
        +              "end": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "start": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "night": {
        +          "items": {
        +            "properties": {
        +              "end": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "start": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "inauspicious_windows": {
        +      "properties": {
        +        "gulikakaal": {
        +          "properties": {
        +            "end": {
        +              "type": "string"
        +            },
        +            "start": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "rahukaal": {
        +          "properties": {
        +            "end": {
        +              "type": "string"
        +            },
        +            "start": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "yamaganda": {
        +          "properties": {
        +            "end": {
        +              "type": "string"
        +            },
        +            "start": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "karana": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "nakshatra": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "on_date": {
        +      "type": "string"
        +    },
        +    "paksha": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sunrise": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sunset": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "tithi": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "tithi_num": {
        +      "type": "integer"
        +    },
        +    "vara": {
        +      "type": "string"
        +    },
        +    "vara_lord": {
        +      "type": "string"
        +    },
        +    "yoga": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedget_varga
  4. 4 tool updates
    • First observedask_jyotish
    • First observedget_chart_facts
    • First observedget_panchang
    • First observedguna_milan

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Vedic 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.
    103
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables AI assistants to access Indian Vedic astrology services including Panchang, Kundli, matchmaking, and festivals through natural language.
    128
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to find auspicious windows for launches, travel, weddings, purchases, publications, and other events using Vedic electional astrology, and to retrieve panchanga, planetary hours, and Rahu Kala.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    World's first Vedic Astrology MCP Server — connect Claude, ChatGPT, Cursor, or any AI to real Vedic astrology. Provides horoscope predictions, compatibility matching, numerology, planetary positions, yogas and house analysis via MCP.
    11
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources