Tool tree
In our previous article, we implemented WebMCP support on a Hugo static site. By using the imperative document.modelContext.registerTool API, we turned a static blog into a programmable tool…
Implementation
gradeNot graded
gradeNot graded
page: Every page
list_article_seriesAnswer
Returns all technical article series published on Ravikanth Chaganti's blog, including the series title, URL slug, number of articles, and series link.
View tool JSON
{
"name": "list_article_series",
"kind": "answer",
"impl": "imperative",
"description": "Returns all technical article series published on Ravikanth Chaganti's blog, including the series title, URL slug, number of articles, and series link.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/categories/"
}get_articles_in_seriesAnswer
Returns all articles belonging to a specific series (e.g. 'Model Context Protocol', 'Microsoft Agent Framework', 'Google ADK', 'Azure Bicep') with article titles, dates, excerpts, permalinks, and markdown source URLs.
View tool JSON
{
"name": "get_articles_in_series",
"kind": "answer",
"impl": "imperative",
"description": "Returns all articles belonging to a specific series (e.g. 'Model Context Protocol', 'Microsoft Agent Framework', 'Google ADK', 'Azure Bicep') with article titles, dates, excerpts, permalinks, and markdown source URLs.",
"inputSchema": {
"type": "object",
"properties": {
"series_name": {
"type": "string",
"description": "The name or slug of the series (case-insensitive, e.g. 'Model Context Protocol' or 'model-context-protocol')"
}
},
"required": [
"series_name"
],
"additionalProperties": false
},
"page": "/categories/"
}search_articlesAnswer
Search blog posts by keyword, technology, or topic across the entire blog archive. Searches titles, categories, series, tags, and excerpts.
View tool JSON
{
"name": "search_articles",
"kind": "answer",
"impl": "imperative",
"description": "Search blog posts by keyword, technology, or topic across the entire blog archive. Searches titles, categories, series, tags, and excerpts.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search keyword or phrase (e.g., 'MCP', 'Agent Framework', 'Docker', 'PowerShell', 'Bicep')"
},
"limit": {
"type": "integer",
"description": "Maximum number of results to return (default 10)",
"default": 10
}
},
"required": [
"query"
],
"additionalProperties": false
},
"page": "/categories/"
}get_article_contentAnswer
Fetches the full markdown content of an article given its permalink URL, path, or slug.
View tool JSON
{
"name": "get_article_content",
"kind": "answer",
"impl": "imperative",
"description": "Fetches the full markdown content of an article given its permalink URL, path, or slug.",
"inputSchema": {
"type": "object",
"properties": {
"url_or_slug": {
"type": "string",
"description": "The full permalink URL, relative path, or slug of the article (e.g. '/blog/anthropic-model-context-protocol/' or 'anthropic-model-context-protocol')"
}
},
"required": [
"url_or_slug"
],
"additionalProperties": false
},
"page": "/categories/"
}get_author_infoAnswer
Returns biographical and background information about the blog author Ravikanth (Ravi) Chaganti, areas of expertise, and social profiles.
View tool JSON
{
"name": "get_author_info",
"kind": "answer",
"impl": "imperative",
"description": "Returns biographical and background information about the blog author Ravikanth (Ravi) Chaganti, areas of expertise, and social profiles.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/categories/"
}