Tool tree
gradeNot graded
scan_images_c2paAction
Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.
View tool JSON
{
"name": "scan_images_c2pa",
"kind": "act",
"impl": "imperative",
"description": "Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "Maximum number of images to fetch and scan (default 25, max 100)."
}
},
"required": []
},
"page": "/"
}inspect_image_c2paAnswer
Fetch a single image (by CSS selector or URL) and return its fully decoded C2PA manifest store: every manifest's claim, assertions (e.g. c2pa.actions edit history, schema.org authorship), and the COSE signature details (algorithm and signing-certificate identity). Provide exactly one of `selector` or `url`. Note: the signature is decoded but NOT cryptographically verified.
View tool JSON
{
"name": "inspect_image_c2pa",
"kind": "answer",
"impl": "imperative",
"description": "Fetch a single image (by CSS selector or URL) and return its fully decoded C2PA manifest store: every manifest's claim, assertions (e.g. c2pa.actions edit history, schema.org authorship), and the COSE signature details (algorithm and signing-certificate identity). Provide exactly one of `selector` or `url`. Note: the signature is decoded but NOT cryptographically verified.",
"inputSchema": {
"type": "object",
"properties": {
"selector": {
"type": "string",
"maxLength": 8192,
"description": "CSS selector for an <img> element on the page."
},
"url": {
"type": "string",
"maxLength": 8192,
"description": "Image URL (absolute, or relative to the current page) to fetch and inspect."
}
},
"required": []
},
"page": "/"
}get_profileAnswer
Who Isaac Solomon is: role, availability, location, background, the services he takes on and the clients he's built for. Start here when asked a general question about him.
View tool JSON
{
"name": "get_profile",
"kind": "answer",
"impl": "imperative",
"description": "Who Isaac Solomon is: role, availability, location, background, the services he takes on and the clients he's built for. Start here when asked a general question about him.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_projectsAnswer
List portfolio projects with year, category, tags and a summary. Optionally filter by a free-text query matched against title, category and tags.
View tool JSON
{
"name": "list_projects",
"kind": "answer",
"impl": "imperative",
"description": "List portfolio projects with year, category, tags and a summary. Optionally filter by a free-text query matched against title, category and tags.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Filter by title, category or tag, e.g. \"e-commerce\"."
}
},
"additionalProperties": false
},
"page": "/"
}get_projectAnswer
Full detail for one project, including its live URL and case study link. Accepts the project title or its slug (from list_projects).
View tool JSON
{
"name": "get_project",
"kind": "answer",
"impl": "imperative",
"description": "Full detail for one project, including its live URL and case study link. Accepts the project title or its slug (from list_projects).",
"inputSchema": {
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "Project title or slug, e.g. \"Mivi\" or \"saut\"."
}
},
"required": [
"project"
],
"additionalProperties": false
},
"page": "/"
}list_writingAnswer
List the case studies and essays, with reading time and year. Optionally filter by a free-text query.
View tool JSON
{
"name": "list_writing",
"kind": "answer",
"impl": "imperative",
"description": "List the case studies and essays, with reading time and year. Optionally filter by a free-text query.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Filter by title, description or tag."
}
},
"additionalProperties": false
},
"page": "/"
}search_siteAnswer
Free-text search across projects, writing, services and work history. Use when you do not know which category an answer lives in.
View tool JSON
{
"name": "search_site",
"kind": "answer",
"impl": "imperative",
"description": "Free-text search across projects, writing, services and work history. Use when you do not know which category an answer lives in.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to look for, e.g. \"SvelteKit\" or \"RTL\"."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Max results (default 10)."
}
},
"required": [
"query"
],
"additionalProperties": false
},
"page": "/"
}get_contactAnswer
How to get in touch with Isaac — email, social links and current availability for work.
View tool JSON
{
"name": "get_contact",
"kind": "answer",
"impl": "imperative",
"description": "How to get in touch with Isaac — email, social links and current availability for work.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}describe_articleAnswer
What one piece of writing actually covers — its section headings in order, opening paragraph, length and reading time — without pulling the full text. Use this to decide whether an article is worth reading in full. Accepts a slug from list_writing (e.g. 'saut' or 'saut/three-hats') or the title.
View tool JSON
{
"name": "describe_article",
"kind": "answer",
"impl": "imperative",
"description": "What one piece of writing actually covers — its section headings in order, opening paragraph, length and reading time — without pulling the full text. Use this to decide whether an article is worth reading in full. Accepts a slug from list_writing (e.g. 'saut' or 'saut/three-hats') or the title.",
"inputSchema": {
"type": "object",
"properties": {
"article": {
"type": "string",
"description": "Article slug or title, e.g. 'godrej' or 'saut/three-hats'."
}
},
"required": [
"article"
],
"additionalProperties": false
},
"page": "/"
}get_articleAnswer
The complete text of one case study or essay, as markdown-style prose with its headings. Use when you need to quote it or answer detail questions; prefer describe_article first if you only need to know what it covers.
View tool JSON
{
"name": "get_article",
"kind": "answer",
"impl": "imperative",
"description": "The complete text of one case study or essay, as markdown-style prose with its headings. Use when you need to quote it or answer detail questions; prefer describe_article first if you only need to know what it covers.",
"inputSchema": {
"type": "object",
"properties": {
"article": {
"type": "string",
"description": "Article slug or title, e.g. 'mivi' or 'saut/worksheet-builder'."
}
},
"required": [
"article"
],
"additionalProperties": false
},
"page": "/"
}list_photosAnswer
Isaac's photography — each frame with its title, location, description and image URL. Optionally filter by a free-text query matched against title, location and description.
View tool JSON
{
"name": "list_photos",
"kind": "answer",
"impl": "imperative",
"description": "Isaac's photography — each frame with its title, location, description and image URL. Optionally filter by a free-text query matched against title, location and description.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Filter by place, location or description, e.g. 'Kedarkantha' or 'stars'."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Max results (default 30)."
}
},
"additionalProperties": false
},
"page": "/"
}