Skip to main content
Glama

AstroWay Astrology API (full catalogue)

Rectification

astroway_prognostics_rectification
Read-onlyIdempotent

Rectify an approximate birth time using a list of life events and transit/direction hits to narrow the birth time window.

[Group: Prognostics] [Endpoint: POST /v1/rectification] [Required: baseInput, events] [Cost: 500 credits (Tier 6)] ⚠️ Heavy — confirm with user before invoking.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "baseInput": "<baseInput>",
      "events": "<events>"
    },
    "name": "astroway_prognostics_rectification"
  }
}

Input Schema

NameRequiredDescriptionDefault
orbNo
eventsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
methodsNo
baseInputYesBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single house-system letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
stepMinutesNo
searchRangeMinutesNo

Output Schema

NameRequiredDescriptionDefault
candidatesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / properties / baseInput / properties / ayanamsaId / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / baseInput / properties / ayanamsaId / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • changedOutput schema / properties / candidates / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "anyOf": [
      -        {
      -          "additionalProperties": {},
      -          "properties": {
      -            "matchedEvents": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "score": {
      -              "anyOf": [
      -                {
      -                  "type": "number"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "time": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            }
      -          },
      -          "type": "object"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ]
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "matchedEvents": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "time": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / baseInput / description
      Previous value: -"Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems."New value: +"Birth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single house-system letter, P by default; a name such as \"Placidus\" is refused, and the case matters because I and i are two different Sunshine systems."
  3. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuinely new operational context: the POST endpoint, the two required inputs, and a 500-credit Tier 6 cost with an explicit instruction to confirm with the user before invoking — exactly the kind of pre-call risk information 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.

Conciseness5/5

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

One front-loaded sentence states the purpose and outcome, followed by compact structured tags for group, endpoint, required inputs, and cost. No filler, and the cost warning sits at the end where it reads as a final gate before invocation.

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 output schema covers return values and annotations cover safety, so those gaps are not the issue. What is missing is guidance on the search configuration (orb, method selection, step size, search range) for what is clearly an expensive, computationally heavy tool — an agent has no basis for choosing those values or for estimating runtime.

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 38% across 8 parameters, so the description needs to compensate and does not. It names only baseInput and events; the tuning parameters that determine result quality — orb, methods (primary/symbolic/progression), stepMinutes, searchRangeMinutes, precision — are never mentioned, and several of those have no schema description either, leaving their meaning entirely opaque.

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 gives a specific verb and resource — 'Rectify an approximate birth time using a list of life events and transit/direction hits to narrow the birth time window' — and even states the goal of the operation (narrowing the window). It does not, however, distinguish itself from the very similar sibling astroway_prognostics_rectification_trutine, which an agent could easily confuse it with.

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 implied by the phrasing: the tool applies when you have an approximate birth time plus a list of dated life events. There is a useful invocation guard ('confirm with user before invoking') tied to cost, but no explicit when-not guidance and no routing advice relative to rectification_trutine or the other prognostics tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources