Skip to main content
Glama

get_timeline

Retrieve chronological event timelines for a person, family, or entire genealogical tree, with generation grouping and filtering options.

Instructions

Chronological event timeline for a person, family, or the whole tree. Read-only.

kind=person -> /people//timeline; kind=family -> /families//timeline; kind=people and kind=families return tree-wide timelines (no handle). Events can be grouped into generations (ancestors/offspring), filtered by event class (event_classes via query), and paged (page/pagesize).

Args: kind: "person", "family", "people" or "families". handle: Person/family handle; required for kinds 'person' and 'family'. page: 1-based page of the event list. pagesize: Events per page. strip: If true, drop empty-valued keys from returned objects. discard_empty: If true, omit placeholder slot rows. omit_anchor: If true, exclude the anchor object's own event row. ratings: If true, include per-event relevance ratings. keys: Comma-delimited subset of object keys to return. skipkeys: Comma-delimited keys to exclude. precision: Significant time components (1-3) for age/span strings. ancestors: Number of ancestor generations to include (person kind). offspring: Number of descendant generations to include (person kind). query: Optional dict of extra timeline params (event_classes, events, relative_events, relatives, first, last, handles, ...). instance: Gramps Web base URL from get_instances; default = first.

Returns: dict: {"status", "url", "data": [timeline rows]}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keysNo
kindYes
pageNo
queryNo
stripNo
handleNo
ratingsNo
instanceNo
pagesizeNo
skipkeysNo
ancestorsNo
offspringNo
precisionNo
omit_anchorNo
discard_emptyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it delivers: it explicitly declares the operation read-only, describes the returned dict shape, and documents behavioral flags like strip, discard_empty, omit_anchor, and ratings. It also exposes underlying endpoint routing, which is valuable behavioral context beyond 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.

Conciseness4/5

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

The description is long, but it earns its length by covering 15 parameters and endpoint variants. It is well-structured with a clear overview, endpoint mappings, a bulleted Args list, and a Returns line. Slightly tighter wording could trim verbosity, but no sentence is filler.

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 complex tool with 15 parameters, no output schema, and no annotations, the description is essentially complete. It explains every parameter, the required/optional relationship, the return structure, and even the default instance behavior. An agent has enough context to call this tool correctly without additional lookup.

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?

Schema description coverage is 0%, so the description must explain all 15 parameters, and it does. Each arg gets a meaningful explanation: kind values, handle requirements, page/pagesize semantics, boolean toggles, precision meaning, generation counts, and the query dict contents. This fully compensates for the empty schema descriptions.

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 states exactly what the tool does: it returns a chronological event timeline for a person, family, or tree-wide scope. It also marks the operation as read-only and distinguishes the allowed resource kinds. This is a specific, unambiguous purpose that an agent can act on immediately.

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 provides clear usage context by mapping each `kind` value to an endpoint and stating which parameters apply to which kind, including the handle requirement for person/family. It does not explicitly name sibling alternatives or state when not to use this tool, but the guidance for selecting kind and scope is strong enough to route an agent correctly.

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