Tool tree
gradeNot graded
page: Every page
start_recordingAction
Begin capturing the user's actions as a demonstration -- they are teaching you a routine. Call this when they say anything like "let me teach you", "watch what I do", or "start recording". The page does the capturing; you see nothing until you call get_recording afterwards. Call stop_recording when they say they are done. This is how new skills get created.
View tool JSON
{
"name": "start_recording",
"kind": "act",
"impl": "imperative",
"description": "Begin capturing the user's actions as a demonstration -- they are teaching you a routine. Call this when they say anything like \"let me teach you\", \"watch what I do\", or \"start recording\". The page does the capturing; you see nothing until you call get_recording afterwards. Call stop_recording when they say they are done. This is how new skills get created.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}stop_recordingAction
Stop capturing and return the demonstration id and step count. Call this when the user says they are done teaching. Then call get_recording to see what they actually did.
View tool JSON
{
"name": "stop_recording",
"kind": "act",
"impl": "imperative",
"description": "Stop capturing and return the demonstration id and step count. Call this when the user says they are done teaching. Then call get_recording to see what they actually did.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}get_recordingAnswer
Read back what the user taught you: a plain-language list of what they did, plus, for each step, the exact fields you may turn into parameters. Each field is marked kind:"content" (a value the user typed or picked -- bind these) or kind:"structural" (the shape of the command -- leave these alone). Read the guidance field. Use this before calling save_skill. Defaults to the most recent recording.
View tool JSON
{
"name": "get_recording",
"kind": "answer",
"impl": "imperative",
"description": "Read back what the user taught you: a plain-language list of what they did, plus, for each step, the exact fields you may turn into parameters. Each field is marked kind:\"content\" (a value the user typed or picked -- bind these) or kind:\"structural\" (the shape of the command -- leave these alone). Read the guidance field. Use this before calling save_skill. Defaults to the most recent recording.",
"inputSchema": {
"type": "object",
"properties": {
"recordingId": {
"type": "string",
"description": "Recording id. Omit for the most recent."
}
},
"required": []
},
"page": "/"
}save_skillAction
Turn a recording into a reusable, parameterised skill. You do NOT supply the steps -- they come from the recording exactly as the user performed them. You supply a name, a description, and which fields in which steps become parameters. Bind every kind:"content" field from get_recording unless the user said it should stay fixed -- missing one means the skill is stuck with a value the user only chose as an example. Each parameter needs: name, stepIndex, fieldPath (both from get_recording), type, and description. The skill is created unapproved; the user reviews the parameters in the Skills panel before it can run.
View tool JSON
{
"name": "save_skill",
"kind": "act",
"impl": "imperative",
"description": "Turn a recording into a reusable, parameterised skill. You do NOT supply the steps -- they come from the recording exactly as the user performed them. You supply a name, a description, and which fields in which steps become parameters. Bind every kind:\"content\" field from get_recording unless the user said it should stay fixed -- missing one means the skill is stuck with a value the user only chose as an example. Each parameter needs: name, stepIndex, fieldPath (both from get_recording), type, and description. The skill is created unapproved; the user reviews the parameters in the Skills panel before it can run.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Skill name: lowercase letters, digits and underscores, e.g. triage_by_topic"
},
"description": {
"type": "string",
"description": "What the skill does, written for whoever calls it later"
},
"recordingId": {
"type": "string",
"description": "Recording id. Omit for the most recent."
},
"params": {
"type": "array",
"description": "Fields to expose as parameters. Empty means the skill always does exactly what was demonstrated.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Parameter name"
},
"stepIndex": {
"type": "number",
"description": "Which step, from get_recording"
},
"fieldPath": {
"type": "string",
"description": "Which field in that step, from bindableFields"
},
"type": {
"type": "string",
"enum": [
"string",
"number"
],
"description": "Parameter type"
},
"description": {
"type": "string",
"description": "What this parameter means"
}
},
"required": [
"name",
"stepIndex",
"fieldPath"
]
}
}
},
"required": [
"name",
"description"
]
},
"page": "/"
}list_skillsAnswer
List the skills this page has learned, with their parameters and whether the user has approved them. Approved skills can be run with run_skill, and are also registered as tools in their own right. Prefer run_skill: it was registered when the page loaded, so it is never missing from a stale tool snapshot.
View tool JSON
{
"name": "list_skills",
"kind": "answer",
"impl": "imperative",
"description": "List the skills this page has learned, with their parameters and whether the user has approved them. Approved skills can be run with run_skill, and are also registered as tools in their own right. Prefer run_skill: it was registered when the page loaded, so it is never missing from a stale tool snapshot.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}run_skillAction
Run a learned skill. Returns what actually happened at each step, including how many items were affected. Call it as many times as the task needs, with different arguments each time -- the user teaches a routine once on one example, and it is your job to supply the remaining cases from what you know. If asked to apply a skill to a category ("every major browser", "the other big tech companies"), enumerate the members yourself and run the skill once per member. If a step matches nothing it fails with the reason and tells you which earlier steps already applied -- read that and adjust rather than retrying blindly.
View tool JSON
{
"name": "run_skill",
"kind": "act",
"impl": "imperative",
"description": "Run a learned skill. Returns what actually happened at each step, including how many items were affected. Call it as many times as the task needs, with different arguments each time -- the user teaches a routine once on one example, and it is your job to supply the remaining cases from what you know. If asked to apply a skill to a category (\"every major browser\", \"the other big tech companies\"), enumerate the members yourself and run the skill once per member. If a step matches nothing it fails with the reason and tells you which earlier steps already applied -- read that and adjust rather than retrying blindly.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Skill name, from list_skills"
},
"args": {
"type": "object",
"description": "Arguments matching the skill's inputSchema",
"additionalProperties": true
}
},
"required": [
"name"
]
},
"page": "/"
}