{"tenant":"quillfield","tools":[{"name":"current_owner","description":"Who owns a system now, since when, who owned it before, and the path back to the documents that say so.","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."}},"required":["system"]},"writes":false},{"name":"owner_at","description":"Who owned a system on a given date (a whole UTC day, or an instant if a time is given).","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"ISO date YYYY-MM-DD, or an ISO datetime for one instant."}},"required":["system","date"]},"writes":false},{"name":"history","description":"Every owner of a system in order, with start, end and the documents behind each change.","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."}},"required":["system"]},"writes":false},{"name":"escalation_path","description":"Whom to call about a system: its owner, the owner's team and the team lead.","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."}},"required":["system"]},"writes":false},{"name":"impact","description":"What depends on a system, up to a number of hops upstream, and who owns each dependent.","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."},"depth":{"type":"integer","minimum":1,"maximum":4,"description":"How many dependency hops to follow (1-4).","default":4},"as_of":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"Only dependencies and owners that existed by this date (whole UTC day)."}},"required":["system"]},"writes":false},{"name":"who_knows","description":"Who has worked on a system, ranked by how many work items they touched.","parameters":{"type":"object","additionalProperties":false,"properties":{"system":{"type":"string","minLength":1,"maxLength":200,"description":"Name of the system, e.g. billing-api. Resolved against the graph (System); an unknown name returns unknown_entity."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"How many people to return (1-50).","default":10}},"required":["system"]},"writes":false},{"name":"decision_trail","description":"How a decision evolved: what it replaced, what replaced it, who decided each, and the documents behind it.","parameters":{"type":"object","additionalProperties":false,"properties":{"decision":{"type":"string","minLength":1,"maxLength":200,"description":"Decision id, e.g. ADR-0004. Resolved against the graph (Decision); an unknown name returns unknown_entity."}},"required":["decision"]},"writes":false},{"name":"why","description":"Why the memory believes or refused a fact: the gate receipts for it and what the memory holds now. The subject may be an entity or a record id (a ticket whose data was refused).","parameters":{"type":"object","additionalProperties":false,"properties":{"subject":{"type":"string","minLength":1,"maxLength":200,"description":"Who or what the fact is about, or a record id such as TCK-0044. Resolved against the graph (System/Person/Team/Decision/Project/Agent/Episode); an unknown name returns unknown_entity."},"predicate":{"type":"string","enum":["OWNS","MEMBER_OF","LEADS","WORKED_ON","DECIDED","SUPERSEDES","DEPENDS_ON","CONSTRAINS","HAS_ADDRESS","HAS_BIRTHDATE","HAS_CARD","HAS_EMAIL","HAS_PHONE"],"description":"Relationship, e.g. OWNS. Personal-data predicates show refusals."},"object":{"type":"string","minLength":1,"maxLength":200,"description":"The other end of the fact. Resolved against the graph (System/Person/Team/Decision/Project/Agent); an unknown name returns unknown_entity."}},"required":["subject"]},"writes":false},{"name":"what_changed","description":"What the memory learned, closed or refused since a date (strictly after the end of that day; give a datetime for an instant).","parameters":{"type":"object","additionalProperties":false,"properties":{"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"ISO date YYYY-MM-DD or ISO datetime."},"predicate":{"type":"string","enum":["OWNS","MEMBER_OF","LEADS","WORKED_ON","DECIDED","SUPERSEDES","DEPENDS_ON","CONSTRAINS"],"description":"Only this kind of fact: OWNS for ownership, DECIDED for accepted ADRs."},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Most rows per kind (1-200).","default":50}},"required":["since"]},"writes":false},{"name":"path_between","description":"How two things are connected: the shortest path over current facts.","parameters":{"type":"object","additionalProperties":false,"properties":{"a":{"type":"string","minLength":1,"maxLength":200,"description":"First entity. Resolved against the graph (System/Person/Team/Decision/Project/Agent); an unknown name returns unknown_entity."},"b":{"type":"string","minLength":1,"maxLength":200,"description":"Second entity. Resolved against the graph (System/Person/Team/Decision/Project/Agent); an unknown name returns unknown_entity."},"max_hops":{"type":"integer","minimum":1,"maximum":8,"description":"Longest path to accept (1-8).","default":6}},"required":["a","b"]},"writes":false},{"name":"recall","description":"What agents concluded or handed over before about an entity, with the dates.","parameters":{"type":"object","additionalProperties":false,"properties":{"entity":{"type":"string","minLength":1,"maxLength":200,"description":"The entity to recall. Resolved against the graph (System/Person/Team/Decision/Project/Agent); an unknown name returns unknown_entity."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Most items to return (1-20).","default":5}},"required":["entity"]},"writes":false},{"name":"facts_about","description":"Every current fact about an entity: team membership, ownership, decisions, work.","parameters":{"type":"object","additionalProperties":false,"properties":{"entity":{"type":"string","minLength":1,"maxLength":200,"description":"The entity to describe. Resolved against the graph (System/Person/Team/Decision/Project/Agent); an unknown name returns unknown_entity."},"predicate":{"type":"string","enum":["OWNS","MEMBER_OF","LEADS","WORKED_ON","DECIDED","SUPERSEDES","DEPENDS_ON","CONSTRAINS"],"description":"Only this relationship, e.g. MEMBER_OF."}},"required":["entity"]},"writes":false},{"name":"remember","description":"Write a finding to the shared memory. The write gate decides whether it is kept.","parameters":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","minLength":3,"maxLength":1000,"description":"What was concluded, one or two sentences."},"about":{"type":"array","minItems":1,"maxItems":5,"items":{"type":"string","minLength":1,"maxLength":200},"description":"Entities the finding is about. Each is resolved against the graph (System/Person/Team/Decision/Project/Agent)."},"source_ids":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":64},"description":"Episode ids (e.g. ADR-0009, msg-0148, TCK-0077) that support this."}},"required":["text","about"]},"writes":true},{"name":"handoff","description":"Hand work to another agent or person. The write gate records it.","parameters":{"type":"object","additionalProperties":false,"properties":{"to":{"type":"string","minLength":1,"maxLength":200,"description":"agent:<name>, or a person or team name. Resolved against the graph (Person/Team/Agent); an unknown name returns unknown_entity."},"topic":{"type":"string","minLength":3,"maxLength":200,"description":"What is being handed over."},"note":{"type":"string","minLength":0,"maxLength":1000,"description":"Context for the receiver."},"source_ids":{"type":"array","maxItems":10,"items":{"type":"string","minLength":1,"maxLength":64},"description":"Episode ids (e.g. ADR-0009, msg-0148, TCK-0077) that support this."}},"required":["to","topic"]},"writes":true},{"name":"what_leaves","description":"What leaves with a person: at depth 1 what they own, lead and belong to; at depth 2-4 also the decisions they made that govern systems other people own, and what depends on those systems, each with its path and sources. Also works before a vacation, leave or team move.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."},"depth":{"type":"integer","minimum":1,"maximum":4,"description":"How many hops to walk from the person (1-4).","default":4},"as_of":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"Read the memory as it stood on this date (whole UTC day)."}},"required":["person"]},"writes":false},{"name":"single_source","description":"Live decisions and systems where every source record was written by this one person, with the records; items with a second author are listed as checked.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."},"as_of":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"Read the memory as it stood on this date (whole UTC day)."}},"required":["person"]},"writes":false},{"name":"without","description":"What-if: what nobody in the graph would be connected to without this person (islands), and through which of their facts it was connected. Runs connected components on a temporary copy.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."}},"required":["person"]},"writes":false},{"name":"bridges","description":"Who links teams: betweenness over people, teams and systems, with the teams each person links and the team pairs only one person links. The only per-person score in this memory.","parameters":{"type":"object","additionalProperties":false,"properties":{"top":{"type":"integer","minimum":1,"maximum":10,"description":"How many people to return (1-10).","default":3}},"required":[]},"writes":false},{"name":"successors","description":"For each item a person leaves orphaned, the people who worked on it or next to it: candidates only, never a decision.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."}},"required":["person"]},"writes":false},{"name":"handoff_plan","description":"One handoff list for a person: each item at risk with why (path), sources, candidates and a suggested action. Read-only; propose=true writes each line as a proposed Handoff through the gate.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."},"last_day":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"Their last day (default: the one their resignation record gives)."},"propose":{"type":"boolean","description":"Write each line as a proposed Handoff (a person approves; nothing is sent).","default":false}},"required":["person"]},"writes":false},{"name":"promises","description":"Promises a person made in the written records since a date (default: their resignation), optionally involving someone. Phone calls and meetings are not recorded; none found is not_in_graph.","parameters":{"type":"object","additionalProperties":false,"properties":{"person":{"type":"string","minLength":1,"maxLength":200,"description":"Full name of the person, e.g. Oskar Alvarez. Resolved against the graph (Person); an unknown name returns unknown_entity."},"since":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(Z|[+-]\\d{2}:\\d{2})?)?$","description":"Only records after this date (whole UTC day)."},"to":{"type":"string","minLength":0,"maxLength":200,"description":"Who the promise would be to, e.g. a customer name."}},"required":["person"]},"writes":false}]}