[
	{
		"type": "function",
		"function": {
			"name": "memory_open",
			"description": "Read persistent memory. No argument returns the index: one line per entry with its name, size in bytes and description. Pick from it and pass every entry you need in one call. Open the index at the start of a session, and whenever you need context on the user, their projects or the people around them.",
			"parameters": {
				"properties": {
					"names": {
						"description": "Entries to open, for instance [\"areas/qwentts-cpp\", \"people/allozaur\"]. Omit for the index alone.",
						"items": {
							"type": "string"
						},
						"title": "Entries to open",
						"type": "array"
					}
				},
				"required": [],
				"title": "MemoryOpenInput",
				"type": "object"
			}
		}
	},
	{
		"type": "function",
		"function": {
			"name": "memory_write",
			"description": "Write persistent memory. Name is <group>/<slug>: areas for ongoing projects, people for the ones the user works with, topics for lasting facts about them. old and new replace a unique string, new alone appends, old alone removes it along with the line break that follows it. new takes as many lines as you have to write. Pass description whenever the edit changes what the entry is about, and when creating one. Store what the user stated, not what you concluded. The index line of the entry comes back with the result.",
			"parameters": {
				"properties": {
					"description": {
						"title": "One line on what this entry covers, shown in the index",
						"type": "string"
					},
					"name": {
						"title": "Entry name, <group>/<slug>",
						"type": "string"
					},
					"new": {
						"title": "Replacement text, or the lines to append",
						"type": "string"
					},
					"old": {
						"title": "Text to replace or remove, must appear exactly once in the body",
						"type": "string"
					}
				},
				"required": ["name"],
				"title": "MemoryWriteInput",
				"type": "object"
			}
		}
	},
	{
		"type": "function",
		"function": {
			"name": "memory_drop",
			"description": "Remove a whole entry from persistent memory, only when the user asks to forget that subject. To remove a single fact, use memory_write with old alone.",
			"parameters": {
				"properties": {
					"name": {
						"title": "Entry name, <group>/<slug>",
						"type": "string"
					}
				},
				"required": ["name"],
				"title": "MemoryDropInput",
				"type": "object"
			}
		}
	}
]
