{"ok":true,"site":{"host":"treetree.app","url":"https://treetree.app/","type":"live","desc":"The live demo of TreeTree — every person here is invented.","tools":[{"name":"what_can_i_do_here","kind":"answer","impl":"imperative","description":"What this page offers and how to use it. Call this when the user asks what they can do here, what this site is, or how it works - and consider calling it once when you first encounter this page, to introduce it to the user. Returns a short introduction meant to be relayed.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"overview_of_family_tree","kind":"answer","impl":"imperative","description":"Summarize this family archive: how many people, relationships, and stories it holds and the span of recorded births. Use this to orient before other tools.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"search_family","kind":"answer","impl":"imperative","description":"Find people in the tree whose name contains the query (case-insensitive). Returns names with lifespans; use these to pick an exact name for other tools.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Part of a name, in any script the archive uses."}},"required":["query"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"person_details","kind":"answer","impl":"imperative","description":"The full record of one person by name: vital facts, parents, spouses, children, and the stories they appear in.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"how_are_they_related","kind":"answer","impl":"imperative","description":"Explain how two people in the tree are related, by name.","inputSchema":{"type":"object","properties":{"person_a":{"type":"string"},"person_b":{"type":"string"}},"required":["person_a","person_b"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"show_person_on_canvas","kind":"act","impl":"imperative","description":"Move the on-screen family tree to centre on a person and open their record, so the human looking at the page sees who you mean. Use this to point at people as you discuss them.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"switch_view","kind":"act","impl":"imperative","description":"Change which view of the archive is on screen: tree (the canvas), family (pedigree), list, timeline, calendar, map, or stats.","inputSchema":{"type":"object","properties":{"view":{"type":"string","enum":["tree","family","list","timeline","calendar","map","stats"]}},"required":["view"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"how_am_i_related","kind":"act","impl":"imperative","description":"How the person using this page is related to someone in the tree, in kinship words from their own point of view. Prefer this when they ask about themselves.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"life_of","kind":"act","impl":"imperative","description":"A person's life told in order - birth, parents, marriages, children, places, stories, death - rather than a field dump.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"family_origins","kind":"act","impl":"imperative","description":"Where the family comes from: recorded birth places by generation, oldest first, so migrations read as movement.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"family_in_year","kind":"answer","impl":"imperative","description":"A snapshot of the family in a given year: births, deaths, who was alive and their ages.","inputSchema":{"type":"object","properties":{"year":{"type":"integer"}},"required":["year"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"namesakes","kind":"act","impl":"imperative","description":"Everyone who carries a given name across the generations - answers \"who am I named after?\".","inputSchema":{"type":"object","properties":{"given_name":{"type":"string"}},"required":["given_name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"upcoming_family_dates","kind":"act","impl":"imperative","description":"Birthdays of the living and remembrance anniversaries in the next month.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"ask_the_archivist","kind":"act","impl":"imperative","description":"Ask the archive's own AI archivist a free-form question about the family and return its answer. Use for anything the structured tools above do not cover.","inputSchema":{"type":"object","properties":{"question":{"type":"string"}},"required":["question"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/"]},{"name":"what_can_i_do_here","kind":"answer","impl":"imperative","description":"What this sandbox offers. Call this when the user asks what they can do here or how it works - and consider calling it once when you first encounter this page, to introduce it. Returns a short introduction meant to be relayed.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"list_family","kind":"answer","impl":"imperative","description":"Everyone currently in the sandbox family, with birth years.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"add_person","kind":"act","impl":"imperative","description":"Add an invented person to the sandbox family the human is watching. The canvas updates immediately.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"birth_year":{"type":"string"},"gender":{"type":"string","enum":["male","female"]}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"link_parent","kind":"act","impl":"imperative","description":"Record that one sandbox person is a parent of another (both must exist; use their exact names).","inputSchema":{"type":"object","properties":{"parent":{"type":"string"},"child":{"type":"string"}},"required":["parent","child"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"link_marriage","kind":"act","impl":"imperative","description":"Record a marriage between two sandbox people (exact names).","inputSchema":{"type":"object","properties":{"person_a":{"type":"string"},"person_b":{"type":"string"}},"required":["person_a","person_b"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"import_sample_gedcom","kind":"act","impl":"imperative","description":"Parse the bundled fictional Rowan GEDCOM and replace the sandbox tree. Undo restores the previous tree.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"undo","kind":"act","impl":"imperative","description":"Undo the most recent change, whoever made it - human click or agent call.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]},{"name":"reset_sandbox","kind":"act","impl":"imperative","description":"Clear the sandbox back to the founding couple.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/demo","pages":["/demo"]}],"apiSurface":"spec","category":"Media & Personal","toolCount":22}}