{"openapi":"3.1.0","info":{"title":"tracevero","version":"v1","summary":"Gemessene Eigenschaften von MCP-Servern und Coding-Agenten, je Wert mit Quelle und Erhebungsdatum.","description":"Measured properties of MCP servers and coding agents, every value with source, collection date and confidence level; derived values additionally with their raw declaration. Part of the collected data is withheld; it appears neither on a page nor here."},"servers":[{"url":"https://tracevero.com"}],"paths":{"/api/v1":{"get":{"summary":"Verzeichnis der Schnittstelle","responses":{"200":{"description":"Fassung, bekannte Arten, Adressen und Grenzen","content":{"application/json":{"schema":{"type":"object","required":["fassung","adressen","arten","sprachen"],"properties":{"fassung":{"type":"string"},"register":{"type":"string"},"hinweis_de":{"type":"string"},"hinweis_en":{"type":"string"},"adressen":{"type":"array","items":{"type":"string"}},"arten":{"type":"array","items":{"type":"string"}},"sprachen":{"type":"array","items":{"type":"string"}},"grenze_vorgabe":{"type":"integer"},"grenze_hoechst":{"type":"integer"}}}}}},"400":{"description":"ein Parameter, den diese Adresse nicht ansieht","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/kennzahlen":{"get":{"summary":"Bestand je Art, Merkmalsverteilungen, Stand der Projektion","description":"Dieselben Zahlen wie /de/kennzahlen, aus denselben Funktionen. Je Merkmal die Verteilung seiner Werte mit anzahl; gekuerzt sagt an, wenn mehr Auspraegungen vorliegen als ausgegeben werden.","parameters":[{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Bestand, Verteilungen, Groessenklassen der Namensraeume","content":{"application/json":{"schema":{"type":"object","required":["bestand","namensraeume","aenderungen"],"properties":{"bestand":{"type":"array","items":{"type":"object","properties":{"art":{"type":"string"},"eintraege":{"type":"integer"},"indexierbar":{"type":"integer"},"projektion":{"type":["object","null"],"description":"null heisst „noch nie gebaut\" und wird auch so gezeigt.","properties":{"gebaut_am":{"type":["string","null"]},"zeilen":{"type":"integer"}}},"verteilung":{"type":"array","items":{"type":"object","properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"mehrwertig":{"type":"boolean"},"werte":{"type":"array","items":{"type":"object","required":["wert","anzahl"],"properties":{"wert":{"type":["string","null"]},"anzahl":{"type":"integer"}}}},"gezeigt":{"type":"integer"},"vorhanden":{"type":"integer"},"gekuerzt":{"type":"boolean","description":"Wer kuerzt, sagt es."}}}}}}},"namensraeume":{"type":"array","items":{"type":"object"}},"aenderungen":{"type":"object","properties":{"anzahl":{"type":"integer"},"juengste":{"type":["string","null"]}}}}}}}},"400":{"description":"ein Parameter, den diese Adresse nicht ansieht","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/themen":{"get":{"summary":"Der Themenkatalog mit gezaehlter Menge je Ausschnitt","parameters":[{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Je Thema der Filter, die Zahl und beide Adressen","content":{"application/json":{"schema":{"type":"object","required":["themen"],"properties":{"sprache":{"type":"string"},"themen":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"art":{"type":"string"},"filter":{"type":"object"},"anzahl":{"type":"integer"},"liste":{"type":"string"},"seite":{"type":"string"}}}},"katalog_fassung":{"type":"integer"}}}}}},"400":{"description":"ein Parameter, den diese Adresse nicht ansieht","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/namensraeume":{"get":{"summary":"Namensraeume mit ihrer Zahl","parameters":[{"name":"mindestens","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":2}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"versatz","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Die Raeume ueber der Schwelle, samt Regel und Fassung","headers":{"X-Gesamt":{"description":"Der vollstaendige Bestand unter dieser Abfrage.","schema":{"type":"integer"}},"X-Grenze":{"description":"Wie viele Zeilen diese Antwort traegt.","schema":{"type":"integer"}},"X-Versatz":{"description":"Ab welcher Zeile sie beginnt.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["gesamt","namensraeume","regel"],"properties":{"sprache":{"type":"string"},"mindestens":{"type":"integer"},"gesamt":{"type":"integer"},"grenze":{"type":"integer"},"versatz":{"type":"integer"},"regel":{"type":"object","properties":{"fassung":{"type":"integer"},"beschreibung_de":{"type":"string"},"beschreibung_en":{"type":"string"}}},"namensraeume":{"type":"array","items":{"type":"object","properties":{"namensraum":{"type":"string"},"anzahl":{"type":"integer"},"slug":{"type":"string"},"adresse":{"type":"string"},"seite":{"type":"string"}}}}}}}}},"400":{"description":"unbekannter oder mehrdeutiger Parameter, unbrauchbare Zahl","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/namensraum/{raum}":{"get":{"summary":"Ein Namensraum mit seinen Eintraegen","description":"Der Namensraum ist der Teil des Bezeichners vor dem ersten Schraegstrich. Die Regel steht mit Fassungsnummer in der Antwort; wem ein Namensraum gehoert, ist damit nicht gesagt.","parameters":[{"name":"raum","in":"path","required":true,"description":"Der Slug des Namensraums, wie ihn /namensraeume je Raum nennt.","schema":{"type":"string"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"versatz","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Der Raum mit seinen Eintraegen in Kurzform","headers":{"X-Gesamt":{"description":"Der vollstaendige Bestand unter dieser Abfrage.","schema":{"type":"integer"}},"X-Grenze":{"description":"Wie viele Zeilen diese Antwort traegt.","schema":{"type":"integer"}},"X-Versatz":{"description":"Ab welcher Zeile sie beginnt.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["namensraum","gesamt","eintraege"],"properties":{"namensraum":{"type":"string"},"slug":{"type":"string"},"gesamt":{"type":"integer"},"grenze":{"type":"integer"},"versatz":{"type":"integer"},"regel":{"type":"object"},"eintraege":{"type":"array","items":{"type":"object","required":["art","schluessel","slug","name","status","adresse"],"properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"homepage":{"type":["string","null"]},"paket_koordinate":{"type":["string","null"]},"indexierbar":{"type":"boolean"},"adresse":{"type":"string"},"merkmale":{"description":"Nur mit felder=merkmale. Je Wert Quelle, Erhebungsdatum und Vertrauensgrad; bei einem abgeleiteten Wert zusaetzlich seine Rohangabe.","type":"array","items":{"type":"object","required":["schluessel","wert","erhoben_am","vertrauensgrad"],"properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean","description":"true heisst „die Quelle erklaert ausdruecklich nichts\". Eine fehlende Zeile heisst dagegen „nicht erhoben\" - das ist nicht dasselbe."},"einheit":{"type":["string","null"]},"quelle":{"type":["object","null"],"properties":{"bezeichnung":{"type":["string","null"]},"url":{"type":["string","null"]}}},"erhoben_am":{"type":["string","null"]},"vertrauensgrad":{"type":["string","null"]},"beleg":{"type":["object","null"],"description":"Die Rohangabe neben dem abgeleiteten Wert.","properties":{"schluessel":{"type":"string"},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean"}}}}}}}}}}}}}},"400":{"description":"unbekannter oder mehrdeutiger Parameter, unbrauchbare Zahl","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}},"404":{"description":"kein Namensraum unter dieser Kennung, oder zurueckgehalten","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/openapi.json":{"get":{"summary":"Diese Beschreibung","responses":{"200":{"description":"Diese Beschreibung nach OpenAPI 3.1","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"ein Parameter, den diese Adresse nicht ansieht","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/regeln":{"get":{"summary":"Die offengelegten Ableitungsregeln und Startvorlagen samt Fassung","responses":{"200":{"description":"Ableitungsregeln und Startvorlagen, je mit Fassungsnummer","content":{"application/json":{"schema":{"type":"object","required":["ableitung","startvorlagen"],"properties":{"ableitung":{"type":"object","properties":{"fassung":{"type":"integer"},"regeln":{"type":"array","items":{"type":"object","properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"beleg_zu":{"type":["string","null"]},"deterministisch":{"type":"boolean"},"beschreibung_de":{"type":"string"},"beschreibung_en":{"type":"string"}}}}}},"startvorlagen":{"type":"object"}}}}}},"400":{"description":"ein Parameter, den diese Adresse nicht ansieht","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/eintraege":{"get":{"summary":"Gefilterte Liste. Jedes Merkmal des Schemas ist als Parameter filterbar.","description":"Der LEERE Wert ist ein Filterwert und kein fehlender Filter: ?roh_paketquellen= waehlt die Eintraege, deren Quelle ausdruecklich keine Paketquelle erklaert (gemessen 5222 von 6486). Ein Parametername, den diese Adresse nicht kennt, wird mit 400 abgewiesen und nicht verworfen.","parameters":[{"name":"art","in":"query","required":true,"description":"Eintragsart oder Pfadsegment, beide Schreibweisen werden angenommen.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"suche","in":"query","required":false,"description":"Freitext ueber Name und Bezeichner, dieselbe Suche wie auf der Seite.","schema":{"type":"string"}},{"name":"felder","in":"query","required":false,"description":"merkmale legt zu jedem Merkmalswert Quelle, Erhebungsdatum und Vertrauensgrad bei. Ohne Angabe traegt jede Zeile nur die Kurzform.","schema":{"type":"string","enum":["merkmale"]}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"versatz","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Der Ausschnitt, seine Gesamtzahl und die Eintraege","headers":{"X-Gesamt":{"description":"Der vollstaendige Bestand unter dieser Abfrage.","schema":{"type":"integer"}},"X-Grenze":{"description":"Wie viele Zeilen diese Antwort traegt.","schema":{"type":"integer"}},"X-Versatz":{"description":"Ab welcher Zeile sie beginnt.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["art","filter","gesamt","eintraege"],"properties":{"art":{"type":"string"},"filter":{"type":"object"},"suche":{"type":["string","null"]},"gesamt":{"type":"integer"},"grenze":{"type":"integer"},"versatz":{"type":"integer"},"eintraege":{"type":"array","items":{"type":"object","required":["art","schluessel","slug","name","status","adresse"],"properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"homepage":{"type":["string","null"]},"paket_koordinate":{"type":["string","null"]},"indexierbar":{"type":"boolean"},"adresse":{"type":"string"},"merkmale":{"description":"Nur mit felder=merkmale. Je Wert Quelle, Erhebungsdatum und Vertrauensgrad; bei einem abgeleiteten Wert zusaetzlich seine Rohangabe.","type":"array","items":{"type":"object","required":["schluessel","wert","erhoben_am","vertrauensgrad"],"properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean","description":"true heisst „die Quelle erklaert ausdruecklich nichts\". Eine fehlende Zeile heisst dagegen „nicht erhoben\" - das ist nicht dasselbe."},"einheit":{"type":["string","null"]},"quelle":{"type":["object","null"],"properties":{"bezeichnung":{"type":["string","null"]},"url":{"type":["string","null"]}}},"erhoben_am":{"type":["string","null"]},"vertrauensgrad":{"type":["string","null"]},"beleg":{"type":["object","null"],"description":"Die Rohangabe neben dem abgeleiteten Wert.","properties":{"schluessel":{"type":"string"},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean"}}}}}}}}}}}}}},"400":{"description":"art fehlt oder ist unbekannt; unbekannter, mehrdeutiger oder unbrauchbarer Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/eintraege.csv":{"get":{"summary":"Dieselbe Liste als Tabelle, eine Spalte je Merkmal","description":"Ein Wert, der mit =, +, - oder @ beginnt, bekommt einen Apostroph voran: Tabellenprogramme wuerden ihn sonst als Formel ausfuehren. Im JSON steht er unveraendert. Mit felder=merkmale traegt jede Merkmalsspalte drei Begleitspalten: <merkmal>__quelle, <merkmal>__erhoben_am und <merkmal>__vertrauensgrad.","parameters":[{"name":"art","in":"query","required":true,"description":"Eintragsart oder Pfadsegment, beide Schreibweisen werden angenommen.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"suche","in":"query","required":false,"description":"Freitext ueber Name und Bezeichner, dieselbe Suche wie auf der Seite.","schema":{"type":"string"}},{"name":"felder","in":"query","required":false,"description":"merkmale legt zu jedem Merkmalswert Quelle, Erhebungsdatum und Vertrauensgrad bei. Ohne Angabe traegt jede Zeile nur die Kurzform.","schema":{"type":"string","enum":["merkmale"]}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"versatz","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Die Tabelle, CRLF nach RFC 4180","headers":{"X-Gesamt":{"description":"Der vollstaendige Bestand unter dieser Abfrage.","schema":{"type":"integer"}},"X-Grenze":{"description":"Wie viele Zeilen diese Antwort traegt.","schema":{"type":"integer"}},"X-Versatz":{"description":"Ab welcher Zeile sie beginnt.","schema":{"type":"integer"}}},"content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"art fehlt oder ist unbekannt; unbekannter, mehrdeutiger oder unbrauchbarer Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/abzug":{"get":{"summary":"Der gesamte Bestand einer Art als ein Abruf, JSON Lines","description":"Ohne Blaetterung und ohne Kappe. Eine Zeile je Eintrag, dieselbe Gestalt wie in /eintraege. X-Gesamt nennt die Zahl der Zeilen, bevor die erste herausgeht; X-Abzug: vollstaendig sagt, dass nichts abgeschnitten ist. Filter, suche und felder wirken wie bei /eintraege.","parameters":[{"name":"art","in":"query","required":true,"description":"Eintragsart oder Pfadsegment, beide Schreibweisen werden angenommen.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"suche","in":"query","required":false,"description":"Freitext ueber Name und Bezeichner, dieselbe Suche wie auf der Seite.","schema":{"type":"string"}},{"name":"felder","in":"query","required":false,"description":"merkmale legt zu jedem Merkmalswert Quelle, Erhebungsdatum und Vertrauensgrad bei. Ohne Angabe traegt jede Zeile nur die Kurzform.","schema":{"type":"string","enum":["merkmale"]}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Eine JSON-Zeile je Eintrag","headers":{"X-Gesamt":{"description":"Die Zahl der Zeilen dieses Abzugs.","schema":{"type":"integer"}},"X-Abzug":{"description":"vollstaendig - diese Adresse kuerzt nicht.","schema":{"type":"string"}}},"content":{"application/x-ndjson":{"schema":{"type":"object","required":["art","schluessel","slug","name","status","adresse"],"properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"homepage":{"type":["string","null"]},"paket_koordinate":{"type":["string","null"]},"indexierbar":{"type":"boolean"},"adresse":{"type":"string"},"merkmale":{"description":"Nur mit felder=merkmale. Je Wert Quelle, Erhebungsdatum und Vertrauensgrad; bei einem abgeleiteten Wert zusaetzlich seine Rohangabe.","type":"array","items":{"type":"object","required":["schluessel","wert","erhoben_am","vertrauensgrad"],"properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean","description":"true heisst „die Quelle erklaert ausdruecklich nichts\". Eine fehlende Zeile heisst dagegen „nicht erhoben\" - das ist nicht dasselbe."},"einheit":{"type":["string","null"]},"quelle":{"type":["object","null"],"properties":{"bezeichnung":{"type":["string","null"]},"url":{"type":["string","null"]}}},"erhoben_am":{"type":["string","null"]},"vertrauensgrad":{"type":["string","null"]},"beleg":{"type":["object","null"],"description":"Die Rohangabe neben dem abgeleiteten Wert.","properties":{"schluessel":{"type":"string"},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean"}}}}}}}}}}},"400":{"description":"art fehlt oder ist unbekannt; unbekannter Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/abzug.csv":{"get":{"summary":"Derselbe vollstaendige Abzug als Tabelle","description":"Dieselben Spalten wie /eintraege.csv, ohne Blaetterung und ohne Kappe. X-Gesamt nennt die Zahl der Datenzeilen ohne die Kopfzeile.","parameters":[{"name":"art","in":"query","required":true,"description":"Eintragsart oder Pfadsegment, beide Schreibweisen werden angenommen.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"suche","in":"query","required":false,"description":"Freitext ueber Name und Bezeichner, dieselbe Suche wie auf der Seite.","schema":{"type":"string"}},{"name":"felder","in":"query","required":false,"description":"merkmale legt zu jedem Merkmalswert Quelle, Erhebungsdatum und Vertrauensgrad bei. Ohne Angabe traegt jede Zeile nur die Kurzform.","schema":{"type":"string","enum":["merkmale"]}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Die vollstaendige Tabelle, CRLF nach RFC 4180","headers":{"X-Gesamt":{"description":"Die Zahl der Datenzeilen.","schema":{"type":"integer"}},"X-Abzug":{"description":"vollstaendig - diese Adresse kuerzt nicht.","schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"art fehlt oder ist unbekannt; unbekannter Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/matrix":{"get":{"summary":"Zwei gemessene Merkmale gegeneinander, mit Randsummen","description":"Dieselbe Zaehlung wie /de/werkzeuge/matrix. Jede Zelle steht da, auch die leere: Eine Tabelle, die ihre Nullen weglaesst, verschweigt die Frage, statt sie zu beantworten. Ohne a und b nimmt die Antwort die beiden ersten kreuzbaren Merkmale; welche das sind, steht als kreuzbar dabei.","parameters":[{"name":"art","in":"query","required":true,"description":"Eintragsart oder Pfadsegment, beide Schreibweisen werden angenommen.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"a","in":"query","required":false,"description":"Das Merkmal der Zeilenachse.","schema":{"type":"string"}},{"name":"b","in":"query","required":false,"description":"Das Merkmal der Spaltenachse.","schema":{"type":"string"}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Die Kreuztabelle mit allen Zellen und beiden Randsummen","headers":{"X-Gesamt":{"description":"Die Summe aller Zellen.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["art","a","b","werte_a","werte_b","zellen","gesamt"],"properties":{"art":{"type":"string"},"a":{"type":"string"},"b":{"type":"string"},"anzeige":{"type":"object","properties":{"a":{"type":["string","null"]},"b":{"type":["string","null"]}}},"kreuzbar":{"type":"array","items":{"type":"string"}},"werte_a":{"type":"array","items":{"type":["string","null"]}},"werte_b":{"type":"array","items":{"type":["string","null"]}},"gesamt":{"type":"integer"},"zellen":{"type":"array","items":{"type":"object","required":["a","b","anzahl"],"properties":{"a":{"type":["string","null"]},"b":{"type":["string","null"]},"anzahl":{"type":"integer"}}}},"summen_a":{"type":"array","items":{"type":"object","properties":{"wert":{"type":["string","null"]},"anzahl":{"type":"integer"}}}},"summen_b":{"type":"array","items":{"type":"object","properties":{"wert":{"type":["string","null"]},"anzahl":{"type":"integer"}}}}}}}}},"400":{"description":"art oder eine Achse ist unbrauchbar; unbekannter Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/suche":{"get":{"summary":"Namenssuche ueber Name und Bezeichner, je Bereich gezaehlt","description":"Dieselbe Suche wie /de/suche. Ohne art laeuft sie ueber alle Bereiche. Ohne q wird nicht gesucht: gesamt ist dann 0 und q null - das heisst „nichts gesucht\" und nicht „nichts gefunden\". Ein Steuerzeichen im Suchtext ist ein 400 unbrauchbare_suche und keine leere Liste.","parameters":[{"name":"art","in":"query","required":false,"description":"Eintragsart oder Pfadsegment. Ohne Angabe: alle Bereiche.","schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"q","in":"query","required":false,"description":"Der Suchtext.","schema":{"type":"string"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"sprache","in":"query","required":false,"description":"In welcher Sprache die Seitenadressen der Antwort gebildet werden. Aendert keine Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Je Bereich die Zahl der Treffer und die gekappte Liste","content":{"application/json":{"schema":{"type":"object","required":["bereiche"],"properties":{"q":{"type":["string","null"]},"grenze":{"type":"integer"},"bereiche":{"type":"array","items":{"type":"object","required":["art","gesamt","treffer"],"properties":{"art":{"type":"string"},"gesamt":{"type":"integer"},"gezeigt":{"type":"integer"},"gekuerzt":{"type":"boolean"},"treffer":{"type":"array","items":{"type":"object","required":["art","schluessel","slug","name","status","adresse"],"properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"homepage":{"type":["string","null"]},"paket_koordinate":{"type":["string","null"]},"indexierbar":{"type":"boolean"},"adresse":{"type":"string"},"merkmale":{"description":"Nur mit felder=merkmale. Je Wert Quelle, Erhebungsdatum und Vertrauensgrad; bei einem abgeleiteten Wert zusaetzlich seine Rohangabe.","type":"array","items":{"type":"object","required":["schluessel","wert","erhoben_am","vertrauensgrad"],"properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean","description":"true heisst „die Quelle erklaert ausdruecklich nichts\". Eine fehlende Zeile heisst dagegen „nicht erhoben\" - das ist nicht dasselbe."},"einheit":{"type":["string","null"]},"quelle":{"type":["object","null"],"properties":{"bezeichnung":{"type":["string","null"]},"url":{"type":["string","null"]}}},"erhoben_am":{"type":["string","null"]},"vertrauensgrad":{"type":["string","null"]},"beleg":{"type":["object","null"],"description":"Die Rohangabe neben dem abgeleiteten Wert.","properties":{"schluessel":{"type":"string"},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean"}}}}}}}}}}}}}}}}},"400":{"description":"unbekannte art, unbrauchbare Suche, unbekannter Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/eintrag/{art}/{slug}":{"get":{"summary":"Ein Eintrag vollstaendig, mit Quelle und Datum je Merkmalswert","parameters":[{"name":"art","in":"path","required":true,"schema":{"type":"string","enum":["mcp_server","coding_agent","mcp","agenten"]}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"sprache","in":"query","required":false,"description":"Waehlt nur die Anzeigenamen der Merkmale, nicht die Werte.","schema":{"type":"string","enum":["de","en"],"default":"de"}}],"responses":{"200":{"description":"Der Eintrag mit Herkunft je Merkmalswert","content":{"application/json":{"schema":{"type":"object","required":["art","schluessel","slug","merkmale"],"properties":{"art":{"type":"string"},"schluessel":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"homepage":{"type":["string","null"]},"paket_koordinate":{"type":["string","null"]},"indexierbar":{"type":"boolean"},"adresse":{"type":"string"},"merkmale":{"description":"Nur mit felder=merkmale. Je Wert Quelle, Erhebungsdatum und Vertrauensgrad; bei einem abgeleiteten Wert zusaetzlich seine Rohangabe.","type":"array","items":{"type":"object","required":["schluessel","wert","erhoben_am","vertrauensgrad"],"properties":{"schluessel":{"type":"string"},"anzeige":{"type":["string","null"]},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean","description":"true heisst „die Quelle erklaert ausdruecklich nichts\". Eine fehlende Zeile heisst dagegen „nicht erhoben\" - das ist nicht dasselbe."},"einheit":{"type":["string","null"]},"quelle":{"type":["object","null"],"properties":{"bezeichnung":{"type":["string","null"]},"url":{"type":["string","null"]}}},"erhoben_am":{"type":["string","null"]},"vertrauensgrad":{"type":["string","null"]},"beleg":{"type":["object","null"],"description":"Die Rohangabe neben dem abgeleiteten Wert.","properties":{"schluessel":{"type":"string"},"wert":{"type":["string","number","boolean","null"]},"nachweislich_leer":{"type":"boolean"}}}}}},"zuletzt_geprueft":{"type":["string","null"]},"tarife":{"type":"array","items":{"type":"object"}},"korrekturen":{"type":"array","items":{"type":"object"}}}}}}},"400":{"description":"unbekannte Art oder unbekannter Parameter","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}},"404":{"description":"kein Eintrag unter dieser Kennung, oder zurueckgehalten","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}},"/api/v1/aenderungen":{"get":{"summary":"Der Aenderungsstrom, mit denselben Eingrenzungen wie der Atom-Feed","parameters":[{"name":"art","in":"query","required":false,"schema":{"type":"string","enum":["mcp_server","coding_agent"]}},{"name":"feld","in":"query","required":false,"schema":{"type":"string"}},{"name":"eintrag","in":"query","required":false,"schema":{"type":"string"}},{"name":"grenze","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"versatz","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"description":"Diese Adresse nennt als einzige KEIN gesamt und kein X-Gesamt: Der Strom laesst sich nicht zaehlen, ohne ihn zu lesen, weil die Belegsperre Zeilen erst nach der Abfrage verwirft. Stattdessen sagt weitere (auch als Kopfzeile X-Weitere), ob es weitergeht, und naechster_versatz, ab welchem Versatz. Ist abgebrochen true, hat der Lauf am Lesebudget geendet: Es geht weiter, aber nicht ueber diese Adresse, und naechster_versatz ist dann null. Ein versatz jenseits des Budgets wird mit 400 versatz_zu_gross abgewiesen; die erreichbare Grenze steht im Hinweis.","responses":{"200":{"description":"Der Ausschnitt des Stroms und die Lage dahinter","headers":{"X-Grenze":{"description":"Wie viele Zeilen diese Antwort traegt.","schema":{"type":"integer"}},"X-Versatz":{"description":"Ab welcher Zeile sie beginnt.","schema":{"type":"integer"}},"X-Weitere":{"description":"Ob hinter dieser Antwort weitere Zeilen stehen.","schema":{"type":"boolean"}},"X-Abgebrochen":{"description":"Steht nur, wenn der Lauf am Lesebudget geendet hat: Es geht weiter, aber nicht ueber diese Adresse. Dann ist naechster_versatz null.","schema":{"type":"boolean"}}},"content":{"application/json":{"schema":{"type":"object","required":["aenderungen","weitere"],"properties":{"filter":{"type":"object"},"grenze":{"type":"integer"},"versatz":{"type":"integer"},"weitere":{"type":"boolean"},"abgebrochen":{"type":"boolean"},"naechster_versatz":{"type":["integer","null"]},"aenderungen":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"art":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"bereich":{"type":"string"},"feld_schluessel":{"type":["string","null"]},"wert_vorher":{"type":["string","null"]},"wert_nachher":{"type":["string","null"]},"klasse":{"type":["string","null"]},"erkannt_am":{"type":["string","null"]},"veroeffentlicht_am":{"type":["string","null"]}}}}}}}}},"400":{"description":"unbekannte Eingrenzung, unbekannter Parameter oder versatz jenseits des Budgets","content":{"application/json":{"schema":{"type":"object","required":["fehler","hinweis"],"properties":{"fehler":{"type":"string","description":"Der benannte Zustand, ueber den ein Abrufer verzweigt.","enum":["unbekannte_art","unbekannter_parameter","mehrdeutiger_parameter","mehrdeutiger_filter","unbrauchbare_zahl","unbrauchbare_suche","unbekannte_felder","unbrauchbare_achse","unbekannte_eingrenzung","versatz_zu_gross","unbekannter_eintrag","unbekannter_namensraum","methode_nicht_erlaubt","unbekannte_adresse","nicht_gefunden","serverfehler"]},"hinweis":{"type":"string","description":"Derselbe Zustand als Satz, fuer den Menschen."}}}}}}}}}}}