@getbirthchart/mcp
OfficialServer Quality Checklist
Latest release: v0.1.1
- Disambiguation3/5
The tools are generally clear but overlap exists: calculate_birth_chart likely subsumes get_planet_positions, get_big_three, get_moon_sign, get_rising_sign, and calculate_aspects. Descriptions help distinguish full-chart vs. granular lookups, but an agent could misselect when a broad chart request overlaps with a specific placement request.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern with snake_case throughout. The get_ prefix is used for direct placement lookups and calculate_ for computed chart outputs, which is a predictable and recognizable convention.
Tool Count5/5Seven tools is well-scoped for an astrology calculation API: a full chart, key placements, aspects, and synastry. Each tool serves a distinct calculation need and the count feels neither bloated nor thin.
Completeness4/5The server covers the core birth-chart workflows: full chart, planetary positions, Sun/Moon/Rising, aspects, and synastry. Minor gaps exist such as no dedicated Sun-sign or house-position endpoint, but calculate_birth_chart covers those cases and avoids dead ends.
Average 3.8/5 across 7 of 7 tools scored. Lowest: 2.9/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 5 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under MIT License.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns structured placements, which is useful, but it does not disclose edge behavior such as how unknown_time affects calculations or whether the output is stable across repeated calls. The description is not contradictory and provides modest value 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.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that communicates the core action and output without verbose filler. It is front-loaded with the main purpose. The phrase 'optional exact birth time and location' introduces ambiguity, which slightly reduces the otherwise strong efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the seven parameters, required fields, and six sibling tools, this description is too sparse to fully orient an agent. It does not explain when to use this tool instead of calculate_birth_chart or get_big_three, nor does it clarify key invocation details like unknown_time, timezone requirements, or required latitude/longitude. The output schema helps with return values, but the description alone is incomplete for safe selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 71% of parameters, and the description adds only a general reference to 'birth date and optional exact birth time and location.' This is misleading because latitude, longitude, and timezone are required by the schema, so calling location optional conflicts with the schema. The description does not clarify unknown_time, timezone handling, or the role of latitude/longitude, leaving important required parameters underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific verb ('Calculate'), a resource ('planetary positions'), and the required input ('birth date'). It also states that the output is 'structured placements supported by GetBirthChart', which adds intent. However, it does not explicitly differentiate itself from calculate_birth_chart or the other sign-specific sibling tools, so it stops short of full clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose this tool over siblings like calculate_birth_chart, get_big_three, or get_rising_sign. It does not state exclusions, prerequisites, or mention that this tool is for raw placements rather than a full chart interpretation. Usage context is entirely left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already marking the tool readOnly, idempotent, and non-destructive, the description adds valuable behavioral context: results are factual and uninterpreted, and calculations follow GetBirthChart's methodology. It does not contradict annotations, though it leaves edge cases like unknown_time behavior to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, with the action and resource front-loaded. The second sentence only adds the important no-interpretation boundary. No filler, no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus annotations and output schema cover the core contract for a read-only calculation tool. What is missing is explicit routing to sibling tools and clarification of how unknown_time affects aspect output; the schema hints at it but the description does not tie the calculation methodology to that input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description offers no parameter-level guidance. Schema descriptions cover date, time, place, timezone, and unknown_time, but latitude and longitude are undocumented, and the description does not compensate for that gap or clarify the role of each input in aspect calculation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Calculate'), a precise resource ('structured natal aspects between chart bodies'), and an output boundary ('Returns factual aspect data without interpretation'). This distinguishes it from sibling tools such as get_big_three or calculate_synastry without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clearly implied: use it when you need calculated natal aspects. However, the description does not explicitly say when not to use it or direct the agent to a sibling such as calculate_birth_chart for a full chart, so routing between tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the bar is lower. The description adds useful expectations by stating it returns 'factual inter-chart data without compatibilty scores or relationship conclusions,' which prevents the agent from expecting judgmental output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The primary purpose is front-loaded, and the second sentence adds the important output caveat. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich input schema, output schema, and strong annotations, the description covers the essential purpose and behavioral boundary. It does not explicitly guide edge cases like unkown_time or sibling selection, but those are not critical for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with detailed descriptions for person_a and person_b and all nested fields. The description adds no new parameter-specific detail, but the schema already carrries that burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Calculate') and resource ('structured synastry relationships between two birth charts'), making the tool's core purpose clear. It also states the output style ('factual inter-chart data') but does not explicitly name or differentiate from sibling tools like calculate_aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'between two birth charts' implies the tool is for comparing two charts, but the description gives no explicit when-to-use versus alternatives or exclusions. Usage guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond that by specifying how the Ascendant should be handled when birth time is missing, which is a real edge case an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The primary purpose is front-loaded, and the edge-case instruction is concise. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover the safety profile, the description is largely complete. It handles the key complication of missing birth time. The only slight gap is the vague reference to the 'GetBirthChart contract' and the lack of explicit sibling alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, with latitude and longitude lacking descriptions. The description compensates meaningfully by connecting birth time/unknown_time to the Ascendant behavior, which is not inferable from the schema alone. Other parameters are self-explanatory by name and schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — 'Calculate the Sun, Moon, and Ascendant for a birth chart' — and clearly identifies the resource and scope. It is clear, though it does not explicitly contrast this tool with siblings like calculate_birth_chart or get_moon_sign, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a meaningful usage rule: if birth time is unknown, do not guess the Ascendant and instead return it as unavailable. However, it does not say when to prefer this tool over alternatives such as calculate_birth_chart, so sibling routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and idempotent, lowering the bar. The description adds a meaningful behavioral guarantee by explicitly forbidding inference or guessing. It does not, however, explain what happens if time is omitted or unknown_time is true, which is a notable behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose is front-loaded, and the critical constraint is stated immediately after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and annotations cover return values and safety, but the description leaves an important ambiguity: the schema allows omitting time and setting unknown_time, while the description insists exact birth time is required. It is unclear whether the tool errors, returns null, or refuses when time is absent. This is a meaningful completeness gap for a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, so most parameters are already documented in the schema. The description adds little parameter-level meaning: it maps 'birth date, exact birth time, and location' to the inputs but does not clarify the discrepancy between 'exact birth time required' and the schema's optional time plus unknown_time flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Calculate') and a specific resource ('the Ascendant (Rising sign)'), with the required inputs. However, it does not distinguish itself from sibling tools like get_big_three, which may also provide the rising sign as part of a larger result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear prerequisite: an exact birth time is required, and the tool must never be used to infer or guess a rising sign. This is a useful when-to-use/when-not-to-use signal, though it does not explicitly name alternatives or explain when to prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable non-obvious behavior: it explicitly preserves uncertainty about which Moon sign applies when the Moon changed signs during a date with an unknown birth time. This is exactly the kind of behavioral context the structured fields do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one efficient sentence. It front-loads the primary action—'Calculate the Moon sign'—and then adds the important uncertainty caveat without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations and existing output schema, the description is nearly complete for safe invocation. The only meaningful gap is the lack of explicit guidance about when to choose this over sibling tools, and the latitude/longitude semantics are left to the schema's bare numeric constraints. Overall, an agent has enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, which is moderate. The description's mention of 'unknown birth time' maps meaningfully to the unknown_time parameter and clarifies its purpose. However, it does not compensate for the bare latitude and longitude parameters, which still lack schema descriptions and are not explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Calculate the Moon sign'. It also adds a distinguishing behavioral nuance—uncertainty preservation when the Moon may have changed signs—which separates it from general horoscope tools like calculate_birth_chart or get_big_three.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when the Moon sign is needed, especially with an unknown birth time. However, it does not explicitly name alternatives or state when not to use it, even though sibling tools like get_big_three and calculate_birth_chart overlap in domain. The usage context is present but not made explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the tool as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond those hints: it explicitly discloses that no default time is assumed and that Ascendant/house calculations are omitted when birth time is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the primary purpose is stated first, and the critical uncertainty-handling behavior is placed second. Every sentence earns its place and the structure is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers the essential call-time behavior and purpose. It could be more complete by explicitly routing to sibling tools for partial results, but nothing critical for invoking the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes most parameters. The description adds semantic value by explaining the behavioral consequence of missing birth time, which directly clarifies the purpose of `unknown_time` and `time`. Latitude/longitude and timezone are left to the schema, but their names and ranges are self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (calculate) and resource (structured natal chart data) from birth information. It does not explicitly distinguish itself from sibling tools like get_planet_positions or get_big_three, but the phrase 'structured natal chart data' conveys a comprehensive scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditional guidance for a common edge case: when birth time is unknown, preserve uncertainty and omit time-dependent results rather than assuming a default. It does not name alternative tools or explicitly say when not to use this tool, but the context provided is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/getbirthchart-com/getbirthchart-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server