{"serverId":"mcp-registry/io.github.achildrenmile/oeradio-mcp","tools":[{"name":"calculate_battery_runtime","fixed":{"name":"calculate_battery_runtime","description":"Berechnet die Akkulaufzeit basierend auf Kapazität und durchschnittlichem Stromverbrauch. Berücksichtigt Effizienz und Entladetiefe.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["capacity_ah","voltage","consumption_watts"],"properties":{"voltage":{"type":"number","maximum":60,"minimum":1,"description":"Nennspannung des Akkus in Volt"},"efficiency":{"type":"number","default":0.85,"maximum":1,"minimum":0.5,"description":"Wirkungsgrad des Reglers (0.85 = 85%)"},"capacity_ah":{"type":"number","maximum":1000,"minimum":0.1,"description":"Akkukapazität in Amperestunden (Ah)"},"consumption_watts":{"type":"number","maximum":2000,"minimum":0.1,"description":"Durchschnittlicher Verbrauch in Watt"},"max_discharge_percent":{"type":"number","default":80,"maximum":100,"minimum":10,"description":"Maximale Entladetiefe in % (80% empfohlen für LiFePO4)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":273,"tokensAfter":273},{"name":"calculate_cable_loss","fixed":{"name":"calculate_cable_loss","description":"Berechnet die Kabeldämpfung für verschiedene Koaxialkabeltypen bei einer bestimmten Frequenz und Länge","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["cable_type","length_meters","frequency_mhz"],"properties":{"cable_type":{"enum":["RG58","RG213","H2000Flex","Aircell7","Ecoflex10","Ecoflex15","LMR400","LMR600"],"type":"string","description":"Kabeltyp"},"frequency_mhz":{"type":"number","maximum":3000,"minimum":0.1,"description":"Frequenz in MHz"},"length_meters":{"type":"number","maximum":1000,"minimum":0.1,"description":"Kabellänge in Metern"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":188,"tokensAfter":188},{"name":"calculate_eirp","fixed":{"name":"calculate_eirp","description":"Berechnet EIRP (Equivalent Isotropically Radiated Power) aus Sendeleistung, Kabelverlust und Antennengewinn. Nützlich für Sicherheitsabstands-Berechnungen nach ÖNORM.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["power_watts","cable_loss_db","antenna_gain_dbi"],"properties":{"power_watts":{"type":"number","maximum":2000,"minimum":0.001,"description":"Sendeleistung in Watt"},"cable_loss_db":{"type":"number","maximum":50,"minimum":0,"description":"Kabelverlust in dB"},"antenna_gain_dbi":{"type":"number","maximum":50,"minimum":-10,"description":"Antennengewinn in dBi"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":194,"tokensAfter":194},{"name":"calculate_swr_loss","fixed":{"name":"calculate_swr_loss","description":"Berechnet den Leistungsverlust durch Fehlanpassung (SWR/VSWR)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["swr"],"properties":{"swr":{"type":"number","maximum":100,"minimum":1,"description":"SWR-Wert (z.B. 1.5, 2.0, 3.0)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"calculate_wavelength","fixed":{"name":"calculate_wavelength","description":"Berechnet die Wellenlänge für eine gegebene Frequenz und optional Drahtlängen für Antennen","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["frequency"],"properties":{"unit":{"enum":["Hz","kHz","MHz","GHz"],"type":"string","default":"MHz","description":"Einheit der Frequenz"},"frequency":{"type":"number","description":"Frequenz","exclusiveMinimum":0},"velocity_factor":{"type":"number","default":0.95,"maximum":1,"minimum":0.5,"description":"Verkürzungsfaktor für Draht (0.95 typisch)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":171,"tokensAfter":171},{"name":"callsign_database_info","fixed":{"name":"callsign_database_info","description":"Zeigt Informationen über die Rufzeichen-Datenbank (Version, Anzahl Einträge, Statistiken)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"callsign_lookup","fixed":{"name":"callsign_lookup","description":"Sucht ein österreichisches Amateurfunkrufzeichen und gibt Inhaberinformationen zurück. Primäre Quelle: offizielle fb.gv.at Liste, mit Fallback auf QRZ.com und HamQTH.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["callsign"],"properties":{"callsign":{"type":"string","description":"Das zu suchende Rufzeichen (z.B. \"OE8YML\")"},"include_address":{"type":"boolean","default":false,"description":"Adresse inkludieren wenn verfügbar"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":155,"tokensAfter":155},{"name":"callsign_validate","fixed":{"name":"callsign_validate","description":"Validiert ein Rufzeichen gegen österreichische Regeln. Prüft Format, Bezirk und Suffix-Länge.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["callsign"],"properties":{"callsign":{"type":"string","description":"Zu validierendes Rufzeichen"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"check_frequency","fixed":{"name":"check_frequency","description":"Prüft ob eine Frequenz im Amateurfunk erlaubt ist und gibt das zugehörige Band zurück","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["frequency"],"properties":{"unit":{"enum":["Hz","kHz","MHz"],"type":"string","default":"kHz","description":"Einheit der Frequenz"},"frequency":{"type":"number","description":"Frequenz als Zahl","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":131,"tokensAfter":131},{"name":"compare_cables","fixed":{"name":"compare_cables","description":"Vergleicht alle verfügbaren Kabeltypen bei einer bestimmten Frequenz und Länge","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["length_meters","frequency_mhz"],"properties":{"frequency_mhz":{"type":"number","maximum":3000,"minimum":0.1,"description":"Frequenz in MHz"},"length_meters":{"type":"number","maximum":1000,"minimum":0.1,"description":"Kabellänge in Metern"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"convert_power","fixed":{"name":"convert_power","description":"Rechnet Leistungswerte zwischen Watt, dBm und dBW um","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value","from_unit"],"properties":{"value":{"type":"number","description":"Leistungswert"},"from_unit":{"enum":["W","mW","dBm","dBW"],"type":"string","description":"Ausgangseinheit"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"get_antenna_gain","fixed":{"name":"get_antenna_gain","description":"Gibt typische Gewinnwerte für verschiedene Antennentypen zurück","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"antenna_type":{"type":"string","description":"Antennentyp (z.B. 'dipol', 'yagi-5el') oder leer für alle"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":95,"tokensAfter":95},{"name":"get_band_plan","fixed":{"name":"get_band_plan","description":"Gibt Frequenzgrenzen, erlaubte Modes und maximale Sendeleistung für ein Amateurfunkband zurück (IARU Region 1 / Österreich)","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["band"],"properties":{"band":{"type":"string","description":"Bandbezeichnung wie '20m', '2m', '70cm', '160m'"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"list_all_bands","fixed":{"name":"list_all_bands","description":"Listet alle verfügbaren Amateurfunkbänder mit Grundinformationen auf","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":59,"tokensAfter":59},{"name":"list_oeradio_tools","fixed":{"name":"list_oeradio_tools","description":"Listet alle verfügbaren OERadio.at Amateurfunk-Werkzeuge mit URLs und Beschreibungen","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"category":{"enum":["all","calculators","learning","utilities"],"type":"string","default":"all","description":"Kategorie filtern: all, calculators, learning, utilities"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":119,"tokensAfter":119}],"toolsChanged":15,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}