Skip to main content
Glama

get_relation

Find the genealogical relationship between two people, returning the most direct path or all possible relationships with shared ancestors when requested.

Instructions

Compute a genealogical relationship between two people. Read-only.

Without all, returns the shortest/most direct relationship (relationship string plus distances). With all=true, lists every possible relationship, including common ancestors per path. Uses /relations// or /relations///all with an optional depth cap on generations.

Args: handle1: First person handle. handle2: Second person handle. all: If true, return all possible relationships (and ancestors). depth: Maximum generations to search for a common ancestor (default 15, minimum 2). instance: Gramps Web base URL from get_instances; default = first.

Returns: dict: {"status", "url", "data": relationship(s)}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
allNo
depthNo
handle1Yes
handle2Yes
instanceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

The description explicitly declares 'Read-only,' which is the key behavioral trait, and also discloses the endpoint pattern, the optional depth cap, and the shape of the return value. Without annotations, this provides a solid safety profile, though it omits error behavior and authentication needs.

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 well-organized with a front-loaded summary, a mode explanation, and clear Args and Returns sections. Each sentence carries functional information with minimal redundancy.

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?

For a read-only two-person relationship computation with no output schema, the description adequately explains both modes, the returned dict keys, and the endpoint. It gives an agent enough to call the tool correctly, with only minor edge-case details absent.

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

Parameters5/5

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

With schema description coverage at 0%, the description compensates fully by explaining all five parameters, their meanings, defaults, and constraints such as depth defaulting to 15 with a minimum of 2 and instance defaulting to the first. This adds substantial value beyond the bare schema.

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 operation with a specific verb and resource: 'Compute a genealogical relationship between two people.' The mode breakdown and read-only note add precision, making it easy to distinguish from siblings like get_timeline or analyze_dna.

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 explains when to use the default mode versus all=true, covering the trade-off between the shortest relationship and all possible relationships. It does not explicitly name sibling alternatives, 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.