{"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","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"],"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"],"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}]}