Tool tree
gradeNot graded
search_siteAnswer
Search Sasi's projects, experiments, personal information, coding preferences at /agents.md and media collection without changing the page. Accepts names, paths, topics and common phrases such as show me animation demos, open-source projects, or how can I contact Sasi. Normalizes common aliases and removes conversational filler, then matches all remaining words; title matches rank first. Use all pages to list every indexed entry. Returns {results: [{kind, title, summary, url}]}; kind is project, experiment, personal_info or collection, URLs are absolute, and no matches returns an empty results array. Searches a curated catalog, not every file or the visual contents of unnamed media. Use get_project or get_experiment for details, get_personal_info for social links, or list_other_experiments for media links.
View tool JSON
{
"name": "search_site",
"kind": "answer",
"impl": "imperative",
"description": "Search Sasi's projects, experiments, personal information, coding preferences at /agents.md and media collection without changing the page. Accepts names, paths, topics and common phrases such as show me animation demos, open-source projects, or how can I contact Sasi. Normalizes common aliases and removes conversational filler, then matches all remaining words; title matches rank first. Use all pages to list every indexed entry. Returns {results: [{kind, title, summary, url}]}; kind is project, experiment, personal_info or collection, URLs are absolute, and no matches returns an empty results array. Searches a curated catalog, not every file or the visual contents of unnamed media. Use get_project or get_experiment for details, get_personal_info for social links, or list_other_experiments for media links.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "\\S",
"description": "A name, path, topic or short phrase, such as show me animation demos. Use / for the homepage or all pages to browse the index."
}
},
"required": [
"query"
],
"additionalProperties": false
},
"page": "/"
}get_personal_infoAnswer
Read Sasi's personal information without changing the page. Returns {name, bio, url, email, profiles: [{label, handle, url}]}. Use toggle_about to change the visible About panel.
View tool JSON
{
"name": "get_personal_info",
"kind": "answer",
"impl": "imperative",
"description": "Read Sasi's personal information without changing the page. Returns {name, bio, url, email, profiles: [{label, handle, url}]}. Use toggle_about to change the visible About panel.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_projectsAnswer
Read Sasi's project catalog without changing the page. Returns {projects: [{name, description, year, url}]}. Use get_project for screenshots or toggle_project to change the visible panel.
View tool JSON
{
"name": "list_projects",
"kind": "answer",
"impl": "imperative",
"description": "Read Sasi's project catalog without changing the page. Returns {projects: [{name, description, year, url}]}. Use get_project for screenshots or toggle_project to change the visible panel.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}get_projectAnswer
Read a project's details without changing the page. Returns {name, description, year, url, screenshots: [{url, width, height}]}. Screenshot URLs are absolute and dimensions are pixels. Use toggle_project to change the visible panel.
View tool JSON
{
"name": "get_project",
"kind": "answer",
"impl": "imperative",
"description": "Read a project's details without changing the page. Returns {name, description, year, url, screenshots: [{url, width, height}]}. Screenshot URLs are absolute and dimensions are pixels. Use toggle_project to change the visible panel.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"enum": [
"start",
"tape"
],
"description": "Project name from list_projects."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}toggle_projectAction
Change the visible project panel. Closes the selected project if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing the selected project name or null when closed. Use get_project to read project details.
View tool JSON
{
"name": "toggle_project",
"kind": "act",
"impl": "imperative",
"description": "Change the visible project panel. Closes the selected project if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing the selected project name or null when closed. Use get_project to read project details.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"enum": [
"start",
"tape"
],
"description": "Project name from list_projects."
}
},
"required": [
"name"
],
"additionalProperties": false
},
"page": "/"
}list_experimentsAnswer
Read Sasi's experiment catalog without changing the page. Returns {experiments: [{slug, name, url}]}; local URLs are relative to this origin. Use get_experiment for a preview, toggle_experiments to display the list, or open_experiment to navigate.
View tool JSON
{
"name": "list_experiments",
"kind": "answer",
"impl": "imperative",
"description": "Read Sasi's experiment catalog without changing the page. Returns {experiments: [{slug, name, url}]}; local URLs are relative to this origin. Use get_experiment for a preview, toggle_experiments to display the list, or open_experiment to navigate.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}get_experimentAnswer
Read an experiment's details without changing the page. Returns {slug, name, url, preview: {url, width, height}}. URLs are absolute and preview dimensions are pixels. Use open_experiment to navigate to the experiment.
View tool JSON
{
"name": "get_experiment",
"kind": "answer",
"impl": "imperative",
"description": "Read an experiment's details without changing the page. Returns {slug, name, url, preview: {url, width, height}}. URLs are absolute and preview dimensions are pixels. Use open_experiment to navigate to the experiment.",
"inputSchema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"enum": [
"winder",
"icons",
"captcha",
"tetris",
"caligraphy",
"knob",
"particle",
"stamp",
"charts",
"dots",
"morph",
"starscii"
],
"description": "Experiment slug from list_experiments."
}
},
"required": [
"slug"
],
"additionalProperties": false
},
"page": "/"
}list_other_experimentsAnswer
List images and demo videos of Sasi's other experiments from the feed, without changing the page. Returns {media: [{kind, url, width, height, poster?}]} in feed order; kind is image or video, url links directly to the media, URLs are absolute, dimensions are pixels, and poster is an optional video preview image URL. Use list_experiments for named interactive experiments, get_project for project screenshots, or toggle_experiments to display the feed.
View tool JSON
{
"name": "list_other_experiments",
"kind": "answer",
"impl": "imperative",
"description": "List images and demo videos of Sasi's other experiments from the feed, without changing the page. Returns {media: [{kind, url, width, height, poster?}]} in feed order; kind is image or video, url links directly to the media, URLs are absolute, dimensions are pixels, and poster is an optional video preview image URL. Use list_experiments for named interactive experiments, get_project for project screenshots, or toggle_experiments to display the feed.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}toggle_experimentsAction
Change the visible experiments panel and media feed. Closes it if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing experiments or null when closed. Use list_experiments or list_other_experiments to read the content.
View tool JSON
{
"name": "toggle_experiments",
"kind": "act",
"impl": "imperative",
"description": "Change the visible experiments panel and media feed. Closes it if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing experiments or null when closed. Use list_experiments or list_other_experiments to read the content.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}open_experimentAction
Navigate this tab to the selected experiment, leaving the portfolio. Winder goes to an external website. Browser Back returns to the portfolio. Returns {navigatingTo: url} if delivered before navigation; the browser may return null after navigation. Use get_experiment to read details without navigating.
View tool JSON
{
"name": "open_experiment",
"kind": "act",
"impl": "imperative",
"description": "Navigate this tab to the selected experiment, leaving the portfolio. Winder goes to an external website. Browser Back returns to the portfolio. Returns {navigatingTo: url} if delivered before navigation; the browser may return null after navigation. Use get_experiment to read details without navigating.",
"inputSchema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"enum": [
"winder",
"icons",
"captcha",
"tetris",
"caligraphy",
"knob",
"particle",
"stamp",
"charts",
"dots",
"morph",
"starscii"
],
"description": "Experiment slug from list_experiments."
}
},
"required": [
"slug"
],
"additionalProperties": false
},
"page": "/"
}toggle_aboutAction
Change the visible About Sasi panel. Closes it if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing about or null when closed. Use get_personal_info to read personal information.
View tool JSON
{
"name": "toggle_about",
"kind": "act",
"impl": "imperative",
"description": "Change the visible About Sasi panel. Closes it if already open; otherwise opens it and replaces any other panel. Returns {activePanel}, containing about or null when closed. Use get_personal_info to read personal information.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}share_contact_emailSensitive Action
Share one email address with Sasi so he can get in touch. Fills the email field and waits for the visitor to press Send. After submission, returns {ok: true, message} on delivery or {ok: false, error} on failure.
View tool JSON
{
"name": "share_contact_email",
"kind": "transact",
"impl": "declarative",
"description": "Share one email address with Sasi so he can get in touch. Fills the email field and waits for the visitor to press Send. After submission, returns {ok: true, message} on delivery or {ok: false, error} on failure.",
"inputSchema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Message"
}
},
"required": [
"email"
]
},
"page": "/"
}