legis:search
Search German state legislation across all 16 Bundesländer using keywords to find relevant laws and regulations for legal research.
Instructions
Search German state legislation (Landesrecht) by keyword. Returns results with IDs for retrieval via legis:get. Covers all 16 Bundesländer. BUND does not support search — use legis:get directly.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "Polizeigesetz", "Schulgesetz", "PolG") | |
| state | Yes | State code (e.g., "BW", "BY", "NW"). Not "BUND" — federal law has no search. | |
| limit | Yes | Maximum number of results (default: 10) |
Implementation Reference
- src/providers/legis/index.ts:63-72 (handler)The handler method for 'legis:search' which takes the state and query, retrieves search results from the corresponding adapter, and formats the output as markdown.
private async handleSearch(args: Record<string, unknown>): Promise<ToolResult> { const { query, state, limit = 10 } = args as { query: string; state: string; limit?: number }; const results = await this.getAdapter(state).search(state, query, limit); const markdown = results .map((r, i) => `${i + 1}. **${r.title}**\n - ID: \`${r.id}\`\n - ${r.subtitle}${r.date ? ` (${r.date})` : ''}`) .join('\n\n'); return { content: [{ type: 'text', text: `Found ${results.length} results:\n\n${markdown}` }] }; } - src/providers/legis/tools/index.ts:8-19 (registration)The schema and metadata registration for the 'legis:search' tool.
{ name: 'legis:search', description: 'Search German state legislation (Landesrecht) by keyword. ' + 'Returns results with IDs for retrieval via legis:get. ' + 'Covers all 16 Bundesländer. BUND does not support search — use legis:get directly.', inputSchema: z.object({ query: z.string().describe('Search query (e.g., "Polizeigesetz", "Schulgesetz", "PolG")'), state: stateEnum.describe('State code (e.g., "BW", "BY", "NW"). Not "BUND" — federal law has no search.'), limit: z.number().optional().default(10).describe('Maximum number of results (default: 10)'), }), },