Skip to main content
Glama
self-tech-labs

Online Kommentar MCP Server

search_commentaries

Search Swiss legal commentaries by query, language, and legislative act to find relevant legal analysis and interpretation.

Instructions

Searches for legal commentaries based on a query and filters.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchYesThe full-text search query.
languageNoContent language.
legislative_actNoFilter by legislative act ID.
sortNoSort order.
pageNoPage number for pagination.

Implementation Reference

  • The asynchronous handler function that executes the 'search_commentaries' tool. It builds query parameters, fetches data from the Online Kommentar API, processes the response, formats the commentaries into text, and handles errors appropriately.
    async (args: { search: string; language?: "en" | "de" | "fr" | "it"; legislative_act?: string; sort?: "title" | "-title" | "date" | "-date"; page?: number; }) => { const { search, language, legislative_act, sort, page } = args; const queryParams = new URLSearchParams({ ...(search && { search }), ...(language && { language }), ...(legislative_act && { legislative_act }), ...(sort && { sort }), ...(page && { page: page.toString() }), }); try { const response = await fetch(`${API_BASE_URL}/commentaries?${queryParams.toString()}`, { headers: { "Accept": "application/json" } }); if (!response.ok) { throw new Error(`API request failed with status ${response.status}`); } const data = (await response.json()) as { data: Commentary[] }; const commentaries = data.data; const resultText = commentaries.length > 0 ? commentaries.map(c => `ID: ${c.id}\nTitle: ${c.title}\nDate: ${c.date}\nURL: ${c.html_link}`).join("\n\n") : "No commentaries found for the given criteria."; return { content: [{ type: "text", text: resultText }], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : "An unknown error occurred"; return { content: [{ type: "text", text: `Error searching commentaries: ${errorMessage}` }], isError: true, }; } }
  • Zod-based input schema defining parameters for the 'search_commentaries' tool: search query, optional filters for language, legislative act, sort order, and pagination.
    inputSchema: { search: z.string().describe("The full-text search query."), language: z.enum(["en", "de", "fr", "it"]).optional().describe("Content language."), legislative_act: z.string().optional().describe("Filter by legislative act ID."), sort: z.enum(["title", "-title", "date", "-date"]).optional().describe("Sort order."), page: z.number().optional().describe("Page number for pagination."), },
  • src/index.ts:39-88 (registration)
    Registration of the 'search_commentaries' tool on the MCP server, including name, metadata, input schema, and handler reference.
    server.registerTool( "search_commentaries", { title: "Search Commentaries", description: "Searches for legal commentaries based on a query and filters.", inputSchema: { search: z.string().describe("The full-text search query."), language: z.enum(["en", "de", "fr", "it"]).optional().describe("Content language."), legislative_act: z.string().optional().describe("Filter by legislative act ID."), sort: z.enum(["title", "-title", "date", "-date"]).optional().describe("Sort order."), page: z.number().optional().describe("Page number for pagination."), }, }, async (args: { search: string; language?: "en" | "de" | "fr" | "it"; legislative_act?: string; sort?: "title" | "-title" | "date" | "-date"; page?: number; }) => { const { search, language, legislative_act, sort, page } = args; const queryParams = new URLSearchParams({ ...(search && { search }), ...(language && { language }), ...(legislative_act && { legislative_act }), ...(sort && { sort }), ...(page && { page: page.toString() }), }); try { const response = await fetch(`${API_BASE_URL}/commentaries?${queryParams.toString()}`, { headers: { "Accept": "application/json" } }); if (!response.ok) { throw new Error(`API request failed with status ${response.status}`); } const data = (await response.json()) as { data: Commentary[] }; const commentaries = data.data; const resultText = commentaries.length > 0 ? commentaries.map(c => `ID: ${c.id}\nTitle: ${c.title}\nDate: ${c.date}\nURL: ${c.html_link}`).join("\n\n") : "No commentaries found for the given criteria."; return { content: [{ type: "text", text: resultText }], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : "An unknown error occurred"; return { content: [{ type: "text", text: `Error searching commentaries: ${errorMessage}` }], isError: true, }; } } );
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/self-tech-labs/onlinekommentar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server