Skip to main content
Glama

ris_gemeinden

Search Austrian municipal laws and regulations to find local ordinances, cross-border legislation, and municipal regulations using filters like state, municipality, or subject area.

Instructions

Search Austrian municipal law (Gemeinderecht).

Use this tool to find municipal regulations and local ordinances.

Applications:

  • Gr: Municipal law (Gemeinderecht) - default

  • GrA: Cross-border municipal law (Gemeinderecht Authentisch/Amtsblätter)

Example queries:

  • gemeinde="Graz", suchworte="Parkgebuehren"

  • bundesland="Tirol", titel="Gebuehrenordnung"

  • applikation="Gr", index="Baurecht"

  • applikation="GrA", bezirk="Bregenz"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
suchworteNoFull-text search terms
titelNoSearch in titles
bundeslandNoFilter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien
gemeindeNoMunicipality name (e.g., "Graz")
applikationNo"Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter)Gr
geschaeftszahlNoFile number/Aktenzeichen (Gr only)
indexNoSubject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft
fassung_vomNoHistorical version date (YYYY-MM-DD, Gr only)
bezirkNoDistrict name (GrA only, e.g., "Bregenz")
gemeindeverbandNoMunicipal association name (GrA only)
kundmachungsnummerNoAnnouncement number (GrA only)
kundmachungsdatum_vonNoAnnouncement date from (YYYY-MM-DD, GrA only)
kundmachungsdatum_bisNoAnnouncement date to (YYYY-MM-DD, GrA only)
im_ris_seitNoFilter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
sortierung_richtungNoSort direction
sortierung_spalte_grNoSort column (Gr only)
seiteNoPage number (default: 1)
limitNoResults per page 10/20/50/100 (default: 20)
response_formatNo"markdown" (default) or "json"markdown

Implementation Reference

  • The 'ris_gemeinden' tool is registered and implemented within the 'registerGemeindenTool' function. It validates inputs, constructs search parameters, and delegates the execution to 'executeSearchTool' with the 'searchGemeinden' client function.
    export function registerGemeindenTool(server: McpServer): void {
      server.tool(
        'ris_gemeinden',
        `Search Austrian municipal law (Gemeinderecht).
    
    Use this tool to find municipal regulations and local ordinances.
    
    Applications:
      - Gr: Municipal law (Gemeinderecht) - default
      - GrA: Cross-border municipal law (Gemeinderecht Authentisch/Amtsblätter)
    
    Example queries:
      - gemeinde="Graz", suchworte="Parkgebuehren"
      - bundesland="Tirol", titel="Gebuehrenordnung"
      - applikation="Gr", index="Baurecht"
      - applikation="GrA", bezirk="Bregenz"`,
        {
          suchworte: z.string().max(1000).optional().describe('Full-text search terms'),
          titel: z.string().max(500).optional().describe('Search in titles'),
          bundesland: z
            .string()
            .max(200)
            .optional()
            .describe(
              'Filter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien',
            ),
          gemeinde: z.string().max(200).optional().describe('Municipality name (e.g., "Graz")'),
          applikation: z
            .enum(['Gr', 'GrA'])
            .default('Gr')
            .describe('"Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter)'),
          // Parameters for Gr application
          geschaeftszahl: z.string().max(200).optional().describe('File number/Aktenzeichen (Gr only)'),
          index: z
            .enum(GEMEINDEN_INDEX_VALUES)
            .optional()
            .describe(
              'Subject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft',
            ),
          fassung_vom: DateSchema.optional().describe('Historical version date (YYYY-MM-DD, Gr only)'),
          // Parameters for GrA application
          bezirk: z.string().max(200).optional().describe('District name (GrA only, e.g., "Bregenz")'),
          gemeindeverband: z
            .string()
            .max(200)
            .optional()
            .describe('Municipal association name (GrA only)'),
          kundmachungsnummer: z.string().max(100).optional().describe('Announcement number (GrA only)'),
          kundmachungsdatum_von: DateSchema.optional().describe(
            'Announcement date from (YYYY-MM-DD, GrA only)',
          ),
          kundmachungsdatum_bis: DateSchema.optional().describe(
            'Announcement date to (YYYY-MM-DD, GrA only)',
          ),
          // Common parameters
          im_ris_seit: z
            .enum(IM_RIS_SEIT_VALUES)
            .optional()
            .describe(
              'Filter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr',
            ),
          sortierung_richtung: z
            .enum(['Ascending', 'Descending'])
            .optional()
            .describe('Sort direction'),
          sortierung_spalte_gr: z
            .enum(['Geschaeftszahl', 'Bundesland', 'Gemeinde'])
            .optional()
            .describe('Sort column (Gr only)'),
          seite: z.number().default(1).describe('Page number (default: 1)'),
          limit: z.number().default(20).describe('Results per page 10/20/50/100 (default: 20)'),
          response_format: z
            .enum(['markdown', 'json'])
            .default('markdown')
            .describe('"markdown" (default) or "json"'),
        },
        async (args) => {
          const {
            suchworte,
            titel,
            bundesland,
            gemeinde,
            applikation,
            geschaeftszahl,
            index,
            fassung_vom,
            bezirk,
            gemeindeverband,
            kundmachungsnummer,
            kundmachungsdatum_von,
            kundmachungsdatum_bis,
            im_ris_seit,
            sortierung_richtung,
            sortierung_spalte_gr,
            seite,
            limit,
            response_format,
          } = args;
    
          if (
            !hasAnyParam(args, [
              'suchworte',
              'titel',
              'bundesland',
              'gemeinde',
              'geschaeftszahl',
              'index',
              'bezirk',
              'kundmachungsnummer',
            ])
          ) {
            return createValidationErrorResponse([
              'suchworte` fuer Volltextsuche',
              'titel` fuer Suche in Titeln',
              'bundesland` fuer Bundesland',
              'gemeinde` fuer Gemeinde',
              'geschaeftszahl` fuer Aktenzeichen (Gr)',
              'index` fuer Sachgebiet (Gr)',
              'bezirk` fuer Bezirk (GrA)',
              'kundmachungsnummer` fuer Kundmachungsnummer (GrA)',
            ]);
          }
    
          const params = buildBaseParams(applikation, limit, seite);
          addOptionalParams(params, [
            [suchworte, 'Suchworte'],
            [titel, 'Titel'],
            [gemeinde, 'Gemeinde'],
            [bundesland, 'Bundesland'],
            [im_ris_seit, 'ImRisSeit'],
            [sortierung_richtung, 'Sortierung.SortDirection'],
          ]);
    
          // Gr-specific parameters
          if (applikation === 'Gr') {
            addOptionalParams(params, [
              [geschaeftszahl, 'Geschaeftszahl'],
              [index, 'Index'],
              [fassung_vom, 'FassungVom'],
              [sortierung_spalte_gr, 'Sortierung.SortedByColumn'],
            ]);
          }
    
          // GrA-specific parameters
          if (applikation === 'GrA') {
            addOptionalParams(params, [
              [bezirk, 'Bezirk'],
              [gemeindeverband, 'Gemeindeverband'],
              [kundmachungsnummer, 'Kundmachungsnummer'],
              [kundmachungsdatum_von, 'Kundmachungsdatum.Von'],
              [kundmachungsdatum_bis, 'Kundmachungsdatum.Bis'],
            ]);
          }
    
          return executeSearchTool(searchGemeinden, params, response_format);
        },
      );
    }
  • Input parameters and validation for the 'ris_gemeinden' tool defined using Zod schemas.
    {
      suchworte: z.string().max(1000).optional().describe('Full-text search terms'),
      titel: z.string().max(500).optional().describe('Search in titles'),
      bundesland: z
        .string()
        .max(200)
        .optional()
        .describe(
          'Filter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien',
        ),
      gemeinde: z.string().max(200).optional().describe('Municipality name (e.g., "Graz")'),
      applikation: z
        .enum(['Gr', 'GrA'])
        .default('Gr')
        .describe('"Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter)'),
      // Parameters for Gr application
      geschaeftszahl: z.string().max(200).optional().describe('File number/Aktenzeichen (Gr only)'),
      index: z
        .enum(GEMEINDEN_INDEX_VALUES)
        .optional()
        .describe(
          'Subject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft',
        ),
      fassung_vom: DateSchema.optional().describe('Historical version date (YYYY-MM-DD, Gr only)'),
      // Parameters for GrA application
      bezirk: z.string().max(200).optional().describe('District name (GrA only, e.g., "Bregenz")'),
      gemeindeverband: z
        .string()
        .max(200)
        .optional()
        .describe('Municipal association name (GrA only)'),
      kundmachungsnummer: z.string().max(100).optional().describe('Announcement number (GrA only)'),
      kundmachungsdatum_von: DateSchema.optional().describe(
        'Announcement date from (YYYY-MM-DD, GrA only)',
      ),
      kundmachungsdatum_bis: DateSchema.optional().describe(
        'Announcement date to (YYYY-MM-DD, GrA only)',
      ),
      // Common parameters
      im_ris_seit: z
        .enum(IM_RIS_SEIT_VALUES)
        .optional()
        .describe(
          'Filter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr',
        ),
      sortierung_richtung: z
        .enum(['Ascending', 'Descending'])
        .optional()
        .describe('Sort direction'),
      sortierung_spalte_gr: z
        .enum(['Geschaeftszahl', 'Bundesland', 'Gemeinde'])
        .optional()
        .describe('Sort column (Gr only)'),
      seite: z.number().default(1).describe('Page number (default: 1)'),
      limit: z.number().default(20).describe('Results per page 10/20/50/100 (default: 20)'),
      response_format: z
        .enum(['markdown', 'json'])
        .default('markdown')
        .describe('"markdown" (default) or "json"'),
    },
  • The 'ris_gemeinden' tool is registered with the MCP server using the 'server.tool' method.
    export function registerGemeindenTool(server: McpServer): void {
      server.tool(
        'ris_gemeinden',
        `Search Austrian municipal law (Gemeinderecht).
    
    Use this tool to find municipal regulations and local ordinances.
    
    Applications:
      - Gr: Municipal law (Gemeinderecht) - default
      - GrA: Cross-border municipal law (Gemeinderecht Authentisch/Amtsblätter)
    
    Example queries:
      - gemeinde="Graz", suchworte="Parkgebuehren"
      - bundesland="Tirol", titel="Gebuehrenordnung"
      - applikation="Gr", index="Baurecht"
      - applikation="GrA", bezirk="Bregenz"`,
        {
          suchworte: z.string().max(1000).optional().describe('Full-text search terms'),
          titel: z.string().max(500).optional().describe('Search in titles'),
          bundesland: z
            .string()
            .max(200)
            .optional()
            .describe(
              'Filter by state - Burgenland, Kärnten, Niederösterreich, Oberösterreich, Salzburg, Steiermark, Tirol, Vorarlberg, Wien',
            ),
          gemeinde: z.string().max(200).optional().describe('Municipality name (e.g., "Graz")'),
          applikation: z
            .enum(['Gr', 'GrA'])
            .default('Gr')
            .describe('"Gr" (municipal law, default) or "GrA" (cross-border/Amtsblätter)'),
          // Parameters for Gr application
          geschaeftszahl: z.string().max(200).optional().describe('File number/Aktenzeichen (Gr only)'),
          index: z
            .enum(GEMEINDEN_INDEX_VALUES)
            .optional()
            .describe(
              'Subject area index (Gr only) - VertretungskoerperUndAllgemeineVerwaltung, OeffentlicheOrdnungUndSicherheit, UnterrichtErziehungSportUndWissenschaft, KunstKulturUndKultus, SozialeWohlfahrtUndWohnbaufoerderung, Gesundheit, StraßenUndWasserbauVerkehr, Wirtschaftsfoerderung, Dienstleistungen, Finanzwirtschaft',
            ),
          fassung_vom: DateSchema.optional().describe('Historical version date (YYYY-MM-DD, Gr only)'),
          // Parameters for GrA application
          bezirk: z.string().max(200).optional().describe('District name (GrA only, e.g., "Bregenz")'),
          gemeindeverband: z
            .string()
            .max(200)
            .optional()
            .describe('Municipal association name (GrA only)'),
          kundmachungsnummer: z.string().max(100).optional().describe('Announcement number (GrA only)'),
          kundmachungsdatum_von: DateSchema.optional().describe(
            'Announcement date from (YYYY-MM-DD, GrA only)',
          ),
          kundmachungsdatum_bis: DateSchema.optional().describe(
            'Announcement date to (YYYY-MM-DD, GrA only)',
          ),
          // Common parameters
          im_ris_seit: z
            .enum(IM_RIS_SEIT_VALUES)
            .optional()
            .describe(
              'Filter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr',
            ),
          sortierung_richtung: z
            .enum(['Ascending', 'Descending'])
            .optional()
            .describe('Sort direction'),
          sortierung_spalte_gr: z
            .enum(['Geschaeftszahl', 'Bundesland', 'Gemeinde'])
            .optional()
            .describe('Sort column (Gr only)'),
          seite: z.number().default(1).describe('Page number (default: 1)'),
          limit: z.number().default(20).describe('Results per page 10/20/50/100 (default: 20)'),
          response_format: z
            .enum(['markdown', 'json'])
            .default('markdown')
            .describe('"markdown" (default) or "json"'),
        },
        async (args) => {
          const {
            suchworte,
            titel,
            bundesland,
            gemeinde,
            applikation,
            geschaeftszahl,
            index,
            fassung_vom,
            bezirk,
            gemeindeverband,
            kundmachungsnummer,
            kundmachungsdatum_von,
            kundmachungsdatum_bis,
            im_ris_seit,
            sortierung_richtung,
            sortierung_spalte_gr,
            seite,
            limit,
            response_format,
          } = args;
    
          if (
            !hasAnyParam(args, [
              'suchworte',
              'titel',
              'bundesland',
              'gemeinde',
              'geschaeftszahl',
              'index',
              'bezirk',
              'kundmachungsnummer',
            ])
          ) {
            return createValidationErrorResponse([
              'suchworte` fuer Volltextsuche',
              'titel` fuer Suche in Titeln',
              'bundesland` fuer Bundesland',
              'gemeinde` fuer Gemeinde',
              'geschaeftszahl` fuer Aktenzeichen (Gr)',
              'index` fuer Sachgebiet (Gr)',
              'bezirk` fuer Bezirk (GrA)',
              'kundmachungsnummer` fuer Kundmachungsnummer (GrA)',
            ]);
          }
    
          const params = buildBaseParams(applikation, limit, seite);
          addOptionalParams(params, [
            [suchworte, 'Suchworte'],
            [titel, 'Titel'],
            [gemeinde, 'Gemeinde'],
            [bundesland, 'Bundesland'],
            [im_ris_seit, 'ImRisSeit'],
            [sortierung_richtung, 'Sortierung.SortDirection'],
          ]);
    
          // Gr-specific parameters
          if (applikation === 'Gr') {
            addOptionalParams(params, [
              [geschaeftszahl, 'Geschaeftszahl'],
              [index, 'Index'],
              [fassung_vom, 'FassungVom'],
              [sortierung_spalte_gr, 'Sortierung.SortedByColumn'],
            ]);
          }
    
          // GrA-specific parameters
          if (applikation === 'GrA') {
            addOptionalParams(params, [
              [bezirk, 'Bezirk'],
              [gemeindeverband, 'Gemeindeverband'],
              [kundmachungsnummer, 'Kundmachungsnummer'],
              [kundmachungsdatum_von, 'Kundmachungsdatum.Von'],
              [kundmachungsdatum_bis, 'Kundmachungsdatum.Bis'],
            ]);
          }
    
          return executeSearchTool(searchGemeinden, params, response_format);
        },
      );
    }

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/philrox/ris-mcp-ts'

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