Tool tree
gradeNot graded
page: Every page
prepare_recordAction
Read one sentence in any language describing what happened — it may contain more than one distinct activity (a payment and a separate purchase, for example). Prepares one draft per activity found and shows the first in the page for the user to confirm; the rest are queued and shown one at a time as each is confirmed or discarded. Does not save anything. Returns a draft_id for every draft prepared, and any fields that could not be determined for each — ask the user about those rather than filling them in.
View tool JSON
{
"name": "prepare_record",
"kind": "act",
"impl": "imperative",
"description": "Read one sentence in any language describing what happened — it may contain more than one distinct activity (a payment and a separate purchase, for example). Prepares one draft per activity found and shows the first in the page for the user to confirm; the rest are queued and shown one at a time as each is confirmed or discarded. Does not save anything. Returns a draft_id for every draft prepared, and any fields that could not be determined for each — ask the user about those rather than filling them in.",
"inputSchema": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The sentence exactly as the user said it."
}
}
},
"page": "/app"
}save_recordAction
Save a prepared draft. Saves immediately, but only with a valid confirmation token, which is issued when the user taps Save in the page. Never call this without a token — there is no way to obtain one except from the user.
View tool JSON
{
"name": "save_record",
"kind": "act",
"impl": "imperative",
"description": "Save a prepared draft. Saves immediately, but only with a valid confirmation token, which is issued when the user taps Save in the page. Never call this without a token — there is no way to obtain one except from the user.",
"inputSchema": {
"type": "object",
"required": [
"draft_id",
"confirm_token"
],
"properties": {
"draft_id": {
"type": "string"
},
"confirm_token": {
"type": "string",
"description": "Issued by the page when the user taps Save."
}
}
},
"page": "/app"
}search_recordsAnswer
Search saved records by person, date range or free text. Returns a summary, up to 20 records and the total count. Use this to answer questions about what happened — never answer from memory.
View tool JSON
{
"name": "search_records",
"kind": "answer",
"impl": "imperative",
"description": "Search saved records by person, date range or free text. Returns a summary, up to 20 records and the total count. Use this to answer questions about what happened — never answer from memory.",
"inputSchema": {
"type": "object",
"properties": {
"person": {
"type": "string"
},
"date_from": {
"type": "string",
"description": "ISO date, YYYY-MM-DD."
},
"date_to": {
"type": "string",
"description": "ISO date, YYYY-MM-DD."
},
"query": {
"type": "string",
"description": "Match against the purpose."
},
"limit": {
"type": "integer",
"maximum": 20,
"default": 20
}
}
},
"page": "/app"
}get_person_historyAnswer
Everything recorded about one person: total paid to them, total received from them, when they last appeared, and their records.
View tool JSON
{
"name": "get_person_history",
"kind": "answer",
"impl": "imperative",
"description": "Everything recorded about one person: total paid to them, total received from them, when they last appeared, and their records.",
"inputSchema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
},
"page": "/app"
}find_incomplete_recordsAnswer
Find records the user still needs to complete, with the field each one is missing. Use this to hand work back to the user as one question at a time. Do not attempt to fill the gaps yourself.
View tool JSON
{
"name": "find_incomplete_records",
"kind": "answer",
"impl": "imperative",
"description": "Find records the user still needs to complete, with the field each one is missing. Use this to hand work back to the user as one question at a time. Do not attempt to fill the gaps yourself.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"default": 10
}
}
},
"page": "/app"
}