Tool tree
gradeNot graded
get_preview_infoAnswer
Get the preview currently open in this tab: title, artifact type, current version, version count, comment counts and whether it is password protected. Call this first to find out what the user is looking at.
View tool JSON
{
"name": "get_preview_info",
"kind": "answer",
"impl": "imperative",
"description": "Get the preview currently open in this tab: title, artifact type, current version, version count, comment counts and whether it is password protected. Call this first to find out what the user is looking at.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_share_infoAnswer
Get everything needed to share this preview somewhere else — the stable share URL, title, current version and open comment count, plus a ready-to-paste one-line summary. Use this when the user asks you to send the preview to a chat, an email or an issue tracker. It never returns the owner token.
View tool JSON
{
"name": "get_share_info",
"kind": "answer",
"impl": "imperative",
"description": "Get everything needed to share this preview somewhere else — the stable share URL, title, current version and open comment count, plus a ready-to-paste one-line summary. Use this when the user asks you to send the preview to a chat, an email or an issue tracker. It never returns the owner token.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}list_commentsAnswer
List review comments on the current preview, oldest first. Each entry includes the comment text, who wrote it, the version it was left on, and where it points (CSS selector for web pages, page number for PDFs, normalized coordinates otherwise). Replies follow their parent and carry its id in parentId, so a whole discussion reads in order. Use this to find out what the reviewer wants changed.
View tool JSON
{
"name": "list_comments",
"kind": "answer",
"impl": "imperative",
"description": "List review comments on the current preview, oldest first. Each entry includes the comment text, who wrote it, the version it was left on, and where it points (CSS selector for web pages, page number for PDFs, normalized coordinates otherwise). Replies follow their parent and carry its id in parentId, so a whole discussion reads in order. Use this to find out what the reviewer wants changed.",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"open",
"resolved",
"all"
],
"default": "open",
"description": "Which comments to return. Defaults to \"open\" — the ones still needing work."
},
"includeOutdated": {
"type": "boolean",
"default": true,
"description": "Include comments left on older versions of this preview."
}
},
"additionalProperties": false
}
}get_commentAnswer
Get one comment in full, including its annotation geometry and — for web previews — the DOM context captured when the reviewer clicked: CSS selector, tag name, text content, an HTML snippet and the viewport size. Use this to locate the exact element in source before editing.
View tool JSON
{
"name": "get_comment",
"kind": "answer",
"impl": "imperative",
"description": "Get one comment in full, including its annotation geometry and — for web previews — the DOM context captured when the reviewer clicked: CSS selector, tag name, text content, an HTML snippet and the viewport size. Use this to locate the exact element in source before editing.",
"inputSchema": {
"type": "object",
"properties": {
"commentId": {
"type": "string",
"description": "The comment id from list_comments."
}
},
"required": [
"commentId"
],
"additionalProperties": false
}
}add_commentAction
Leave a review comment on the current preview, as an agent would during a review pass ("check this page at mobile width and comment on anything broken"). Optionally anchor it to a CSS selector or to normalized coordinates (0..1 of the artifact box) so the human sees a marker in the right place. The comment appears in the sidebar immediately.
View tool JSON
{
"name": "add_comment",
"kind": "act",
"impl": "imperative",
"description": "Leave a review comment on the current preview, as an agent would during a review pass (\"check this page at mobile width and comment on anything broken\"). Optionally anchor it to a CSS selector or to normalized coordinates (0..1 of the artifact box) so the human sees a marker in the right place. The comment appears in the sidebar immediately.",
"inputSchema": {
"type": "object",
"properties": {
"body": {
"type": "string",
"minLength": 1,
"maxLength": 10000,
"description": "The comment text."
},
"authorName": {
"type": "string",
"maxLength": 80,
"default": "AI agent",
"description": "Shown as the comment author."
},
"selector": {
"type": "string",
"description": "CSS selector of the element the comment is about (web previews only)."
},
"point": {
"type": "object",
"description": "Normalized position of a pin marker, each value between 0 and 1.",
"properties": {
"x": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"x",
"y"
],
"additionalProperties": false
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number, for PDF previews."
},
"replyTo": {
"type": "string",
"description": "Reply in this thread instead of starting a new one. A comment id from list_comments. A reply inherits the thread target."
}
},
"required": [
"body"
],
"additionalProperties": false
}
}resolve_commentAction
Mark a comment thread as resolved once the requested change has actually been made and a new version published. Resolving a thread resolves its replies with it. Requires the owner token for this preview to be present in this browser. Comments are resolved, never deleted, so the history stays reviewable.
View tool JSON
{
"name": "resolve_comment",
"kind": "act",
"impl": "imperative",
"description": "Mark a comment thread as resolved once the requested change has actually been made and a new version published. Resolving a thread resolves its replies with it. Requires the owner token for this preview to be present in this browser. Comments are resolved, never deleted, so the history stays reviewable.",
"inputSchema": {
"type": "object",
"properties": {
"commentId": {
"type": "string",
"description": "The comment id from list_comments."
}
},
"required": [
"commentId"
],
"additionalProperties": false
}
}list_versionsAnswer
List every version of this preview, newest first, with its number, size, file count, upload source and whether it is the one currently served at the share URL.
View tool JSON
{
"name": "list_versions",
"kind": "answer",
"impl": "imperative",
"description": "List every version of this preview, newest first, with its number, size, file count, upload source and whether it is the one currently served at the share URL.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_review_summaryAnswer
One call that returns the whole review state: preview metadata, the current version, the version history and every open comment thread with its target and replies. Counts are per thread. Use this at the start of a fix-the-feedback loop instead of calling the individual read tools one by one.
View tool JSON
{
"name": "get_review_summary",
"kind": "answer",
"impl": "imperative",
"description": "One call that returns the whole review state: preview metadata, the current version, the version history and every open comment thread with its target and replies. Counts are per thread. Use this at the start of a fix-the-feedback loop instead of calling the individual read tools one by one.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}focus_commentAction
Scroll the reviewer's screen to a comment, select it, and outline the element it points at inside the preview. Use it while discussing feedback with someone so you are both looking at the same thing — say which comment you mean, then call this to show them.
View tool JSON
{
"name": "focus_comment",
"kind": "act",
"impl": "imperative",
"description": "Scroll the reviewer's screen to a comment, select it, and outline the element it points at inside the preview. Use it while discussing feedback with someone so you are both looking at the same thing — say which comment you mean, then call this to show them.",
"inputSchema": {
"type": "object",
"properties": {
"commentId": {
"type": "string",
"description": "The comment id from list_comments."
}
},
"required": [
"commentId"
],
"additionalProperties": false
}
}set_viewportAction
Resize the preview the reviewer is looking at, to check how the artifact behaves at a different width. Use it before commenting on responsive problems — switch to mobile, look at what breaks, then leave a comment about it. Applies to web previews only.
View tool JSON
{
"name": "set_viewport",
"kind": "act",
"impl": "imperative",
"description": "Resize the preview the reviewer is looking at, to check how the artifact behaves at a different width. Use it before commenting on responsive problems — switch to mobile, look at what breaks, then leave a comment about it. Applies to web previews only.",
"inputSchema": {
"type": "object",
"properties": {
"viewport": {
"type": "string",
"enum": [
"fit",
"desktop",
"tablet",
"mobile"
],
"description": "fit = the whole window, desktop = 1280px, tablet = 768px, mobile = 390px."
}
},
"required": [
"viewport"
],
"additionalProperties": false
}
}list_artifact_filesAnswer
List the files in the version currently on screen, with sizes and content types. Use it to find which file to read before working out how to satisfy a comment.
View tool JSON
{
"name": "list_artifact_files",
"kind": "answer",
"impl": "imperative",
"description": "List the files in the version currently on screen, with sizes and content types. Use it to find which file to read before working out how to satisfy a comment.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}read_artifact_fileAnswer
Read one text file out of the version on screen — the HTML or CSS the reviewer is actually looking at. Use it after list_artifact_files to see the markup behind a comment, so you can name the exact rule or element that needs to change rather than guessing. Binary files are refused.
View tool JSON
{
"name": "read_artifact_file",
"kind": "answer",
"impl": "imperative",
"description": "Read one text file out of the version on screen — the HTML or CSS the reviewer is actually looking at. Use it after list_artifact_files to see the markup behind a comment, so you can name the exact rule or element that needs to change rather than guessing. Binary files are refused.",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "A path from list_artifact_files, for example \"assets/site.css\"."
}
},
"required": [
"path"
],
"additionalProperties": false
}
}create_preview_from_urlAction
Create a brand new Liha preview from a public URL and return its share URL and owner token. Use this when the user wants to collect review feedback on a page that is already deployed. Private and internal addresses are rejected.
View tool JSON
{
"name": "create_preview_from_url",
"kind": "act",
"impl": "imperative",
"description": "Create a brand new Liha preview from a public URL and return its share URL and owner token. Use this when the user wants to collect review feedback on a page that is already deployed. Private and internal addresses are rejected.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "A public http(s) URL."
},
"title": {
"type": "string",
"maxLength": 200
},
"password": {
"type": "string",
"minLength": 6,
"description": "Optional password reviewers must enter."
}
},
"required": [
"url"
],
"additionalProperties": false
}
}