Skip to main content
Glama

ris_sonstige

Search specialized Austrian legal collections including ministerial decrees, cabinet protocols, court announcements, trade exams, health plans, veterinary notices, social insurance documents, and party transparency decisions.

Instructions

Search miscellaneous Austrian legal collections (Sonstige).

Use this tool for specialized legal documents and historical materials.

Available applications:

  • PruefGewO: Trade licensing examinations (Gewerbeordnung)

  • Avsv: Social insurance announcements (Sozialversicherung)

  • Spg: Health structure plans (Strukturpläne Gesundheit)

  • Avn: Official veterinary notices (Amtliche Veterinärnachrichten)

  • KmGer: Court announcements (Kundmachungen der Gerichte)

  • Upts: Party transparency decisions (Parteien-Transparenz-Senat)

  • Mrp: Council of Ministers protocols (Ministerratsprotokolle)

  • Erlaesse: Ministerial decrees (Erlässe der Bundesministerien)

Example queries:

  • applikation="Mrp", suchworte="Budget", einbringer="BMF..."

  • applikation="Erlaesse", bundesministerium="Bundesministerium für Finanzen"

  • applikation="Upts", partei="SPÖ - Sozialdemokratische Partei Österreichs"

  • applikation="KmGer", kmger_typ="Geschaeftsordnung"

  • applikation="Avsv", dokumentart="Richtlinie"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
applikationYesCollection to search - "PruefGewO" (trade exams), "Avsv" (social insurance), "Spg" (health plans), "Avn" (veterinary notices), "KmGer" (court announcements), "Upts" (party transparency), "Mrp" (cabinet protocols), "Erlaesse" (decrees)
suchworteNoFull-text search terms
titelNoSearch in titles
datum_vonNoDate from (YYYY-MM-DD)
datum_bisNoDate to (YYYY-MM-DD)
im_ris_seitNoFilter by time in RIS - EinerWoche, ZweiWochen, EinemMonat, DreiMonaten, SechsMonaten, EinemJahr
sortierung_richtungNoSort direction
geschaeftszahlNoFile number/Aktenzeichen (for Mrp, Upts, KmGer)
normNoLegal norm reference (for Erlaesse, Upts)
fassung_vomNoHistorical version date (YYYY-MM-DD, for Erlaesse)
einbringerNoSubmitter (Mrp only, e.g., ministry abbreviation)
sitzungsnummerNoSession number (Mrp only)
gesetzgebungsperiodeNoLegislative period (Mrp only, e.g., '27')
bundesministeriumNoFederal ministry (Erlaesse only)
abteilungNoDepartment/division (Erlaesse only)
fundstelleNoSource reference (Erlaesse only)
parteiNoPolitical party (Upts only)
kmger_typNoAnnouncement type (KmGer only) - Geschaeftsordnung, Geschaeftsverteilung
gerichtNoCourt name (KmGer only)
dokumentartNoDocument type search (Avsv only) - free text search expression
urheberNoAuthor/institution (Avsv only)
avsvnummerNoAVSV number (Avsv only)
avnnummerNoAVN number (Avn only)
avn_typNoNotice type (Avn only) - Kundmachung, Verordnung, Erlass
spgnummerNoSPG number (Spg only)
osg_typNoAustrian health structure plan type (Spg only) - ÖSG, ÖSG - Großgeräteplan
rsg_typNoRegional health structure plan type (Spg only) - RSG, RSG - Großgeräteplan
rsg_landNoFederal state for RSG (Spg only)
pruefgewo_typNoExamination type (PruefGewO only) - Befähigungsprüfung, Eignungsprüfung, Meisterprüfung
seiteNoPage number (default: 1)
limitNoResults per page 10/20/50/100 (default: 20)
response_formatNo"markdown" (default) or "json"markdown

Implementation Reference

  • The handler function that processes the arguments, builds the search parameters for different legal sub-collections, and executes the search.
    async (args) => {
      const {
        applikation,
        suchworte,
        titel,
        datum_von,
        datum_bis,
        im_ris_seit,
        sortierung_richtung,
        geschaeftszahl,
        norm,
        fassung_vom,
        einbringer,
        sitzungsnummer,
        gesetzgebungsperiode,
        bundesministerium,
        abteilung,
        fundstelle,
        partei,
        kmger_typ,
        gericht,
        dokumentart,
        urheber,
        avsvnummer,
        avnnummer,
        avn_typ,
        spgnummer,
        osg_typ,
        rsg_typ,
        rsg_land,
        pruefgewo_typ,
        seite,
        limit,
        response_format,
      } = args;
    
      // Validate at least one search parameter beyond applikation
      const searchParamKeys = [
        'suchworte',
        'titel',
        'geschaeftszahl',
        'norm',
        'einbringer',
        'sitzungsnummer',
        'gesetzgebungsperiode',
        'bundesministerium',
        'abteilung',
        'fundstelle',
        'partei',
        'kmger_typ',
        'gericht',
        'dokumentart',
        'urheber',
        'avsvnummer',
        'avnnummer',
        'avn_typ',
        'spgnummer',
        'osg_typ',
        'rsg_typ',
        'rsg_land',
        'pruefgewo_typ',
        'im_ris_seit',
        'datum_von',
        'datum_bis',
      ];
    
      if (!hasAnyParam(args, searchParamKeys)) {
        return createValidationErrorResponse([
          'suchworte` fuer Volltextsuche',
          'titel` fuer Suche in Titeln',
          'oder applikationsspezifische Parameter (siehe Tool-Beschreibung)',
        ]);
      }
    
      const params = buildBaseParams(applikation, limit, seite);
      addOptionalParams(params, [
        [suchworte, 'Suchworte'],
        [titel, 'Titel'],
        [im_ris_seit, 'ImRisSeit'],
        [sortierung_richtung, 'Sortierung.SortDirection'],
      ]);
    
      // Build date parameters based on application type
      if (datum_von || datum_bis) {
        switch (applikation) {
          case 'Mrp':
            if (datum_von) params['Sitzungsdatum.Von'] = datum_von;
            if (datum_bis) params['Sitzungsdatum.Bis'] = datum_bis;
            break;
          case 'Upts':
            if (datum_von) params['Entscheidungsdatum.Von'] = datum_von;
            if (datum_bis) params['Entscheidungsdatum.Bis'] = datum_bis;
            break;
          case 'Erlaesse':
            if (datum_von) params['VonInkrafttretensdatum'] = datum_von;
            if (datum_bis) params['BisInkrafttretensdatum'] = datum_bis;
            break;
          case 'PruefGewO':
          case 'Spg':
          case 'KmGer':
            if (datum_von) params['Kundmachungsdatum.Von'] = datum_von;
            if (datum_bis) params['Kundmachungsdatum.Bis'] = datum_bis;
            break;
          case 'Avsv':
          case 'Avn':
            if (datum_von) params['Kundmachung.Von'] = datum_von;
            if (datum_bis) params['Kundmachung.Bis'] = datum_bis;
            break;
        }
      }
    
      // Application-specific parameters
      switch (applikation) {
        case 'Mrp':
          if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
          if (einbringer) params['Einbringer'] = einbringer;
          if (sitzungsnummer) params['Sitzungsnummer'] = sitzungsnummer;
          if (gesetzgebungsperiode) params['Gesetzgebungsperiode'] = gesetzgebungsperiode;
          break;
        case 'Erlaesse':
          if (norm) params['Norm'] = norm;
          if (fassung_vom) params['FassungVom'] = fassung_vom;
          if (bundesministerium) params['Bundesministerium'] = bundesministerium;
          if (abteilung) params['Abteilung'] = abteilung;
          if (fundstelle) params['Fundstelle'] = fundstelle;
          break;
        case 'Upts':
          if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
          if (norm) params['Norm'] = norm;
          if (partei) params['Partei'] = partei;
          break;
        case 'KmGer':
          if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
          if (kmger_typ) params['Typ'] = kmger_typ;
          if (gericht) params['Gericht'] = gericht;
          break;
        case 'Avsv':
          if (dokumentart) params['Dokumentart'] = dokumentart;
          if (urheber) params['Urheber'] = urheber;
          if (avsvnummer) params['Avsvnummer'] = avsvnummer;
          break;
        case 'Avn':
          if (avnnummer) params['Avnnummer'] = avnnummer;
          if (avn_typ) params['Typ'] = avn_typ;
          break;
        case 'Spg':
          if (spgnummer) params['Spgnummer'] = spgnummer;
          if (osg_typ) params['OsgTyp'] = osg_typ;
          if (rsg_typ) params['RsgTyp'] = rsg_typ;
          if (rsg_land) params['RsgLand'] = rsg_land;
          break;
        case 'PruefGewO':
          if (pruefgewo_typ) params['Typ'] = pruefgewo_typ;
          break;
      }
    
      return executeSearchTool(searchSonstige, params, response_format);
    },
  • Registration of the ris_sonstige tool.
    export function registerSonstigeTool(server: McpServer): void {
      server.tool(
        'ris_sonstige',
        `Search miscellaneous Austrian legal collections (Sonstige).
    
    Use this tool for specialized legal documents and historical materials.
    
    Available applications:
      - PruefGewO: Trade licensing examinations (Gewerbeordnung)
      - Avsv: Social insurance announcements (Sozialversicherung)
      - Spg: Health structure plans (Strukturpläne Gesundheit)
      - Avn: Official veterinary notices (Amtliche Veterinärnachrichten)
      - KmGer: Court announcements (Kundmachungen der Gerichte)
      - Upts: Party transparency decisions (Parteien-Transparenz-Senat)
      - Mrp: Council of Ministers protocols (Ministerratsprotokolle)
      - Erlaesse: Ministerial decrees (Erlässe der Bundesministerien)
    
    Example queries:
      - applikation="Mrp", suchworte="Budget", einbringer="BMF..."
      - applikation="Erlaesse", bundesministerium="Bundesministerium für Finanzen"
      - applikation="Upts", partei="SPÖ - Sozialdemokratische Partei Österreichs"
      - applikation="KmGer", kmger_typ="Geschaeftsordnung"
      - applikation="Avsv", dokumentart="Richtlinie"`,
        {
          applikation: z
            .enum(['PruefGewO', 'Avsv', 'Spg', 'Avn', 'KmGer', 'Upts', 'Mrp', 'Erlaesse'])
            .describe(
              'Collection to search - "PruefGewO" (trade exams), "Avsv" (social insurance), "Spg" (health plans), "Avn" (veterinary notices), "KmGer" (court announcements), "Upts" (party transparency), "Mrp" (cabinet protocols), "Erlaesse" (decrees)',
            ),
          suchworte: z.string().max(1000).optional().describe('Full-text search terms'),
          titel: z.string().max(500).optional().describe('Search in titles'),
          datum_von: DateSchema.optional().describe('Date from (YYYY-MM-DD)'),
          datum_bis: DateSchema.optional().describe('Date to (YYYY-MM-DD)'),
          // 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'),
          geschaeftszahl: z
            .string()
            .max(200)
            .optional()
            .describe('File number/Aktenzeichen (for Mrp, Upts, KmGer)'),
          norm: z.string().max(500).optional().describe('Legal norm reference (for Erlaesse, Upts)'),
          fassung_vom: DateSchema.optional().describe(
            'Historical version date (YYYY-MM-DD, for Erlaesse)',
          ),
          // Mrp-specific parameters
          einbringer: z
            .string()
            .max(200)
            .optional()
            .describe('Submitter (Mrp only, e.g., ministry abbreviation)'),
          sitzungsnummer: z.string().max(50).optional().describe('Session number (Mrp only)'),
          gesetzgebungsperiode: z
            .string()
            .max(10)
            .optional()
            .describe("Legislative period (Mrp only, e.g., '27')"),
          // Erlaesse-specific parameters
          bundesministerium: z
            .enum(BUNDESMINISTERIEN)
            .optional()
            .describe('Federal ministry (Erlaesse only)'),
          abteilung: z.string().max(200).optional().describe('Department/division (Erlaesse only)'),
          fundstelle: z.string().max(200).optional().describe('Source reference (Erlaesse only)'),
          // Upts-specific parameters
          partei: z.enum(UPTS_PARTEIEN).optional().describe('Political party (Upts only)'),
          // KmGer-specific parameters
          kmger_typ: z
            .enum(KMGER_TYP_VALUES)
            .optional()
            .describe('Announcement type (KmGer only) - Geschaeftsordnung, Geschaeftsverteilung'),
          gericht: z.string().max(200).optional().describe('Court name (KmGer only)'),
          // Avsv-specific parameters
          dokumentart: z
            .string()
            .max(200)
            .optional()
            .describe('Document type search (Avsv only) - free text search expression'),
          urheber: z.enum(AVSV_URHEBER_VALUES).optional().describe('Author/institution (Avsv only)'),
          avsvnummer: z.string().max(100).optional().describe('AVSV number (Avsv only)'),
          // Avn-specific parameters
          avnnummer: z.string().max(100).optional().describe('AVN number (Avn only)'),
          avn_typ: z
            .enum(AVN_TYP_VALUES)
            .optional()
            .describe('Notice type (Avn only) - Kundmachung, Verordnung, Erlass'),
          // Spg-specific parameters
          spgnummer: z.string().max(100).optional().describe('SPG number (Spg only)'),
          osg_typ: z
            .enum(SPG_OSG_TYP_VALUES)
            .optional()
            .describe('Austrian health structure plan type (Spg only) - ÖSG, ÖSG - Großgeräteplan'),
          rsg_typ: z
            .enum(SPG_RSG_TYP_VALUES)
            .optional()
            .describe('Regional health structure plan type (Spg only) - RSG, RSG - Großgeräteplan'),
          rsg_land: z.string().max(100).optional().describe('Federal state for RSG (Spg only)'),
          // PruefGewO-specific parameters
          pruefgewo_typ: z
            .enum(PRUEFGEWO_TYP_VALUES)
            .optional()
            .describe(
              'Examination type (PruefGewO only) - Befähigungsprüfung, Eignungsprüfung, Meisterprüfung',
            ),
          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 {
            applikation,
            suchworte,
            titel,
            datum_von,
            datum_bis,
            im_ris_seit,
            sortierung_richtung,
            geschaeftszahl,
            norm,
            fassung_vom,
            einbringer,
            sitzungsnummer,
            gesetzgebungsperiode,
            bundesministerium,
            abteilung,
            fundstelle,
            partei,
            kmger_typ,
            gericht,
            dokumentart,
            urheber,
            avsvnummer,
            avnnummer,
            avn_typ,
            spgnummer,
            osg_typ,
            rsg_typ,
            rsg_land,
            pruefgewo_typ,
            seite,
            limit,
            response_format,
          } = args;
    
          // Validate at least one search parameter beyond applikation
          const searchParamKeys = [
            'suchworte',
            'titel',
            'geschaeftszahl',
            'norm',
            'einbringer',
            'sitzungsnummer',
            'gesetzgebungsperiode',
            'bundesministerium',
            'abteilung',
            'fundstelle',
            'partei',
            'kmger_typ',
            'gericht',
            'dokumentart',
            'urheber',
            'avsvnummer',
            'avnnummer',
            'avn_typ',
            'spgnummer',
            'osg_typ',
            'rsg_typ',
            'rsg_land',
            'pruefgewo_typ',
            'im_ris_seit',
            'datum_von',
            'datum_bis',
          ];
    
          if (!hasAnyParam(args, searchParamKeys)) {
            return createValidationErrorResponse([
              'suchworte` fuer Volltextsuche',
              'titel` fuer Suche in Titeln',
              'oder applikationsspezifische Parameter (siehe Tool-Beschreibung)',
            ]);
          }
    
          const params = buildBaseParams(applikation, limit, seite);
          addOptionalParams(params, [
            [suchworte, 'Suchworte'],
            [titel, 'Titel'],
            [im_ris_seit, 'ImRisSeit'],
            [sortierung_richtung, 'Sortierung.SortDirection'],
          ]);
    
          // Build date parameters based on application type
          if (datum_von || datum_bis) {
            switch (applikation) {
              case 'Mrp':
                if (datum_von) params['Sitzungsdatum.Von'] = datum_von;
                if (datum_bis) params['Sitzungsdatum.Bis'] = datum_bis;
                break;
              case 'Upts':
                if (datum_von) params['Entscheidungsdatum.Von'] = datum_von;
                if (datum_bis) params['Entscheidungsdatum.Bis'] = datum_bis;
                break;
              case 'Erlaesse':
                if (datum_von) params['VonInkrafttretensdatum'] = datum_von;
                if (datum_bis) params['BisInkrafttretensdatum'] = datum_bis;
                break;
              case 'PruefGewO':
              case 'Spg':
              case 'KmGer':
                if (datum_von) params['Kundmachungsdatum.Von'] = datum_von;
                if (datum_bis) params['Kundmachungsdatum.Bis'] = datum_bis;
                break;
              case 'Avsv':
              case 'Avn':
                if (datum_von) params['Kundmachung.Von'] = datum_von;
                if (datum_bis) params['Kundmachung.Bis'] = datum_bis;
                break;
            }
          }
    
          // Application-specific parameters
          switch (applikation) {
            case 'Mrp':
              if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
              if (einbringer) params['Einbringer'] = einbringer;
              if (sitzungsnummer) params['Sitzungsnummer'] = sitzungsnummer;
              if (gesetzgebungsperiode) params['Gesetzgebungsperiode'] = gesetzgebungsperiode;
              break;
            case 'Erlaesse':
              if (norm) params['Norm'] = norm;
              if (fassung_vom) params['FassungVom'] = fassung_vom;
              if (bundesministerium) params['Bundesministerium'] = bundesministerium;
              if (abteilung) params['Abteilung'] = abteilung;
              if (fundstelle) params['Fundstelle'] = fundstelle;
              break;
            case 'Upts':
              if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
              if (norm) params['Norm'] = norm;
              if (partei) params['Partei'] = partei;
              break;
            case 'KmGer':
              if (geschaeftszahl) params['Geschaeftszahl'] = geschaeftszahl;
              if (kmger_typ) params['Typ'] = kmger_typ;
              if (gericht) params['Gericht'] = gericht;
              break;
            case 'Avsv':
              if (dokumentart) params['Dokumentart'] = dokumentart;
              if (urheber) params['Urheber'] = urheber;
              if (avsvnummer) params['Avsvnummer'] = avsvnummer;
              break;
            case 'Avn':
              if (avnnummer) params['Avnnummer'] = avnnummer;
              if (avn_typ) params['Typ'] = avn_typ;
              break;
            case 'Spg':
              if (spgnummer) params['Spgnummer'] = spgnummer;
              if (osg_typ) params['OsgTyp'] = osg_typ;
              if (rsg_typ) params['RsgTyp'] = rsg_typ;
              if (rsg_land) params['RsgLand'] = rsg_land;
              break;
            case 'PruefGewO':
              if (pruefgewo_typ) params['Typ'] = pruefgewo_typ;
              break;
          }
    
          return executeSearchTool(searchSonstige, params, response_format);
        },
      );
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions the tool is for searching and provides example queries, it doesn't disclose important behavioral traits like whether this is a read-only operation, what authentication might be required, rate limits, pagination behavior (beyond the 'seite' and 'limit' parameters in schema), error conditions, or what the response format looks like. For a search tool with 32 parameters and no annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose statement, usage guidance, application explanations, and example queries. It's appropriately sized for a complex tool with many parameters. While comprehensive, some information (like the detailed application explanations) could potentially be moved to the schema descriptions, but they're valuable context for users unfamiliar with Austrian legal terminology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (32 parameters, 12 with enums), no annotations, and no output schema, the description does a reasonable job but has gaps. It explains the tool's purpose and provides application context well, but doesn't address behavioral aspects like response format, error handling, or performance characteristics. The example queries help but don't cover all parameter combinations. For such a complex tool without annotations or output schema, more comprehensive behavioral information would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds substantial value by providing the 'Available applications' section that explains what each 'applikation' value represents in practical terms (e.g., 'PruefGewO: Trade licensing examinations'), which gives semantic context beyond the schema's enum values. The example queries further illustrate how parameters combine for different use cases, though they don't cover all 32 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Search miscellaneous Austrian legal collections (Sonstige)' with a specific verb ('Search') and resource ('miscellaneous Austrian legal collections'). It distinguishes from siblings by specifying this is for 'specialized legal documents and historical materials' rather than the more general legal collections implied by sibling names like ris_bundesrecht or ris_judikatur.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Use this tool for specialized legal documents and historical materials.' It lists 8 specific applications with explanations, giving concrete examples of what types of documents this tool searches. However, it doesn't explicitly state when NOT to use it or name specific alternative tools among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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

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