← Plugin catalog
Finance
Boersi
Boersi v1.0.0
Publisher description
From the marketplace listing
Boersi connects ChatGPT to a structured database on 1,800+ stocks & ETFs: business model, key figures, balance sheet, governance, ESG, peers and supply chain. Facts only, no investment advice, recommendations or price targets.
Language: English · Automatically detected from descriptions.
Files & skills
File archives
Plugin package9 files · 11.4 KBBrowse files →
Skill instructions
boersi-dossier-lookup2.68 KB
---
name: boersi-dossier-lookup
description: Verwende diesen Skill für stichtagsbezogene Fakten zu einer einzelnen Firma oder einem Wertpapier aus Boersi, etwa Kennzahlen, Bilanz, Dividende, Governance, ESG, Stammdaten oder Coverage. Nutze die ISIN und die fünf Boersi-MCP-Tools gezielt; gib keine Anlageberatung, Empfehlungen oder Kursziele.
---
# Boersi Dossier-Lookup
Boersi liefert strukturierte Fakten zu Unternehmen und Wertpapieren, gegliedert in
thematische Sektionen je Firma. Eine Firma wird über ihre ISIN adressiert. Es ist eine
Fakten-Datenbank, keine Anlageberatung.
## Die fünf Tools
| Tool | Verwenden für |
| --- | --- |
| `get_dossier(isin)` | einen Gesamtüberblick oder mehrere benötigte Sektionen einer Firma |
| `get_field(isin, field_path)` | eine einzelne, konkrete Kennzahl; Rückgabe ist `{wert, as_of_date}` |
| `search_dossiers({ sektor?, land?, min_vollstaendigkeit?, cursor?, limit? })` | das Finden von Firmen, wenn die ISIN unbekannt ist; höchstens 25 Ergebnisse pro Seite |
| `coverage_stats(isin?)` | Pflicht-, Gesamt- und Register-Abdeckung einer Firma oder aggregiert |
| `list_sections(isin)` | verfügbare Sektionen (`id`, `titel`, Pflicht-Flag) ohne Feldwerte |
## Auswahlregel
1. Bei bekannter ISIN und einer einzelnen Zahl zuerst `get_field` mit einem Pfad der Form
`<sektion>.<feld>` verwenden. Den Pfad nicht raten, sondern vorher ermitteln.
2. Bei bekannter ISIN und gewünschtem Überblick `get_dossier` verwenden.
3. Wenn der richtige Feldpfad unklar ist, zuerst `list_sections` abrufen.
4. Bei Fragen zur Datenabdeckung `coverage_stats` verwenden.
5. Wenn die ISIN unbekannt ist oder mehrere Firmen gesucht werden, `search_dossiers` verwenden
und anschließend nur notwendige Details gezielt nachladen.
## Verbindliche Antwortregeln
- Nenne jeden abgerufenen Feldwert immer zusammen mit `as_of_date`, etwa
„34,2 Mrd. € (Stand 2024-12-31)".
- Gib ausschließlich Fakten wieder: keine Kauf-/Verkaufsempfehlungen, keine Kursziele,
keine Eignungsurteile und kein Ranking als Empfehlung (§32).
- Quellen, interne Referenzen, Register- oder Objekt-IDs erscheinen nie im Output. Frage
nicht danach und erfinde keine Quellenangaben.
- Verwende für eine Einzelzahl `get_field` statt eines vollständigen Dossiers.
- Bei unbekannter ISIN oder unbekanntem Feld klar sagen, dass kein Ergebnis vorliegt; nicht raten.
## Beispiele
- „Wie hoch war der Umsatz von SAP (DE0007164600)?" →
`get_field("DE0007164600", "<sektion>.<feld>")` mit dem zuvor ermittelten Umsatz-Pfad.
- „Gib mir einen Faktenüberblick zu Allianz (DE0008404005)." →
`get_dossier("DE0008404005")`.
- „Welche Bereiche sind zu Toyota (JP3633400001) erfasst?" →
`list_sections("JP3633400001")`.
boersi-index-screener5.17 KB
---
name: boersi-index-screener
description: Filtert Firmen eines Index nach Kriterien und sortiert sie. Nutze diese Skill für Screening-Fragen mit Index-Bezug — DAX, MDAX, EURO STOXX, S&P 500 — etwa „welche DAX-Firmen erfüllen Kriterium X" oder „sortiere die MDAX-Titel nach Y". Aktiviert bei Fragen wie „Welche DAX-Werte haben die höchste Datenabdeckung?", „Screene den MDAX nach Sektor Industrie", „Sortiere die deutschen Index-Titel nach Umsatz".
---
# Boersi Index-Screener
Screening mit Index-Bezug — mit einer Einschränkung, die du **immer** mitkommunizieren musst.
## Index-Mitgliedschaft ist KEIN Suchfilter
`search_dossiers` filtert **ausschließlich** nach `sektor`, `land` und `min_vollstaendigkeit`.
Es gibt **keinen** `index`-Parameter und **keine** Namenssuche. Die Index-Zugehörigkeit steht nur
**pro Firma** als einzelnes Feld in der Stammdaten-Sektion des Dossiers — den genauen Pfad
ermittelst du einmal über `list_sections`/`get_dossier` und verwendest ihn dann wieder.
Daraus folgt: Ein Index lässt sich **nicht** abfragen, nur **firmenweise prüfen**. Behaupte
niemals, du hättest „alle DAX-Firmen" oder „den kompletten Index" abgedeckt.
## Zwei Wege — beide legitim, beide offenzulegen
| Weg | Wann | Vorgehen |
|-----|------|----------|
| **A — Konstituenten-Liste** (bevorzugt) | Der Nutzer nennt die Firmen oder ISINs | Je ISIN das Index-Feld per `get_field` bestätigen, dann die Screening-Felder laden |
| **B — Proxy-Screening** | Der Nutzer nennt nur den Index | Über `sektor`/`land` eingrenzen, Treffer laden, Mitgliedschaft je Kandidat per `get_field` prüfen |
Bei **B** ist `land` der beste Proxy (DAX/MDAX → `land: "DE"`), aber eben nur ein Proxy: der
Filter findet auch nicht-gelistete Firmen und verfehlt Index-Mitglieder mit anderem Sitzland.
### Mitgliedschaft prüfen — die Regel
Prüfe die Zugehörigkeit **je Kandidat** per `get_field` und nimm nur bestätigte Treffer in die
Ergebnistabelle. Deckle die Prüfung bei **25 Kandidaten** (ein Aufruf je Kandidat, und das
Rate-Limit liegt bei 15/60/240 Calls pro Minute je nach Plan). Was du nicht geprüft hast, kommt
nicht als Index-Mitglied in die Tabelle — führe es allenfalls getrennt als „ungeprüft" auf.
Liefert das Feld nichts, gilt die Firma als **nicht bestätigt**, nicht als Mitglied.
## Ablauf
1. **Index und Kriterium klären.** Kriterium = wonach gefiltert (Sektor, Land, Abdeckung, eine
Kennzahl) und wonach sortiert wird.
2. **Kandidaten beschaffen** — Weg A oder B. Bei B: `search_dossiers({ land, sektor? })`,
max. **25 Treffer pro Seite** (Plan `plus`: 10), weitere Seiten nur per `cursor` und nur so
viele, wie nötig. Nennt der Nutzer Firmennamen statt ISINs, gleiche sie gegen das Feld `firma`
in der Trefferprojektion ab — eine Namenssuche gibt es nicht.
3. **Mitgliedschaft prüfen** (siehe Regel oben).
4. **Screening-Feld laden.** Ist das Kriterium eine Kennzahl, Feldpfad einmal per `get_dossier` an
einer Referenzfirma lernen und dann je Kandidat `get_field` — nie ein Dossier pro Firma
(`get_dossier` ist kontingentiert, `plus`: 5/Monat). Ist das Kriterium die Datenabdeckung,
genügt `gesamt_prozent` aus der Suchprojektion — **kein** zusätzlicher Call.
5. **Sortieren und ausgeben.** Sortiert wird **clientseitig über die geladenen Kandidaten** —
der Server sortiert nicht. Tabelle: Firma · ISIN · Kriteriumswert **mit `as_of_date`** ·
ggf. `gesamt_prozent`.
## Feste Regeln
- **Grundgesamtheit offenlegen.** Schreib dazu, worüber sortiert wurde: „geprüft wurden 18 von
dir genannte Titel" bzw. „Kandidaten aus `land: DE`, davon 12 als Index-Mitglied bestätigt".
Eine Rangliste ohne offengelegte Grundgesamtheit ist irreführend.
- **Nie „alle Firmen" behaupten.** Weder für den Index noch für die Datenbank. Ist `nextCursor`
gesetzt und nicht weitergeladen, sag es.
- **Index-Zugehörigkeit nicht aus Wissen ergänzen.** Nicht aus dem Gedächtnis entscheiden, wer im
DAX ist — nur das Feld zählt. Stichtag der Zugehörigkeit mit ausgeben; Index-Zusammensetzungen
ändern sich.
- **Sortierung ist kein Ranking im Sinne einer Empfehlung (§32).** Keine Kursziele, keine
„Top-Picks", kein „bester Wert im Index". Sortieren nach einer Faktenspalte ist erlaubt,
daraus eine Anlageaussage abzuleiten nicht.
- **Jeder Wert mit `as_of_date`**, abweichende Stichtage kennzeichnen — sonst vergleicht die
Sortierung Äpfel mit Birnen.
- **Kein Bulk.** Keine Seiten erschöpfen, um eine Gesamtliste zu erzeugen; keine Ausgabe, die als
Index-Export dient.
- **Keine Quellen im Output.** Interne Provenienz wird serverseitig entfernt.
## Beispiel
*„Welche deutschen Index-Titel im Sektor Industrie haben die beste Datenabdeckung?"*
1. `search_dossiers({ land: "DE", sektor: "Industrie", min_vollstaendigkeit: 50 })`.
2. Je Treffer `get_field(isin, "<sektion>.<feld>")` mit dem ermittelten Index-Pfad
→ bestätigte Mitglieder behalten, Rest getrennt als „ungeprüft/nicht bestätigt" ausweisen.
3. Sortieren nach `gesamt_prozent` aus der Projektion — kein weiterer Call nötig.
4. Tabelle Firma · ISIN · Index (mit Stichtag) · Abdeckung, darunter der Satz, wie viele
Kandidaten geprüft wurden und dass offene Seiten existieren.
boersi-lieferketten-karte5.39 KB
---
name: boersi-lieferketten-karte
description: Baut die Zulieferer- und Kundenkarte einer Firma. Nutze diese Skill für Fragen zur Lieferkette, zu Zulieferern, Lieferanten, Abhängigkeiten, Produktionsstandorten, Rohstoffen oder zur Kundenstruktur einer Firma. Aktiviert bei Fragen wie „Wer beliefert Volkswagen?", „Zeig mir die Lieferkette von BMW", „Von welchen Zulieferern hängt die Firma ab?", „Wer sind die größten Kunden von Infineon?".
---
# Boersi Lieferketten-Karte
Die Karte hat **zwei Seiten**: *upstream* (Zulieferer, Standorte, Rohstoffe) aus der
**Lieferketten-Sektion** und *downstream* (Kunden, Konzentration, Kanäle) aus der
**Kunden-Sektion** der Firma.
## Wichtig: die beiden Seiten sind unterschiedlich gut erfasst
| Seite | Datenlage | Konsequenz |
|-------|-----------|------------|
| **Upstream** | Die Lieferketten-Sektion kann eine **strukturierte Zulieferer-Liste** enthalten — Einträge mit Partnername, Typ, Kategorie und Stichtag. Vorhanden für einen **Teil** der Firmen, nicht für alle. | Namentliche Zulieferer sind belastbar auflistbar — **wenn** das Feld existiert. |
| **Downstream** | Für die Kundenseite gibt es in aller Regel **kein** namentliches Register, sondern Fließtext plus Rahmen- und Konzentrationsangaben. | Kunden **nur** so wiedergeben, wie der Text sie nennt. Keine Kundenliste konstruieren. |
Diese Asymmetrie **musst du dem Nutzer sagen**, wenn er nach beiden Seiten fragt. Eine
symmetrische „Zulieferer ↔ Kunden"-Tabelle vorzutäuschen, wo nur eine Seite Struktur hat, ist
ein Fehler.
## Tools
| Tool | Rolle |
|------|-------|
| `list_sections(isin)` | prüfen, ob Lieferketten- und Kunden-Sektion überhaupt erfasst sind |
| `get_dossier(isin)` | wenn beide Seiten + Standorte/Rohstoffe/Abhängigkeiten gebraucht werden |
| `get_field(isin, "<sektion>.<feld>")` | **sparsamster Weg**, wenn nur die Zulieferer-Liste gefragt ist |
> `get_dossier` liefert **immer das ganze Dossier** — es gibt keinen Sektions-Parameter. Und es
> ist kontingentiert (`plus`: 5/Monat). Reicht ein einzelnes Feld, nimm `get_field` — den
> genauen Pfad vorher aus `list_sections`/`get_dossier` ermitteln, **nie raten**.
## Ablauf
1. **Umfang klären.** Nur Zulieferer und der Pfad ist bekannt? → ein `get_field`. Ganze Karte
inkl. Standorten, Rohstoffen, Abhängigkeiten und Kundenseite? → ein `get_dossier`.
2. **Vorhandensein prüfen** mit `list_sections(isin)` — fehlt die Lieferketten-Sektion, sag das
direkt, statt sie über andere Sektionen zu rekonstruieren.
3. **Upstream strukturieren** aus der Lieferketten-Sektion, soweit vorhanden:
| Bereich | Inhalt |
|---------|--------|
| Zulieferer-Liste | namentliche Partner mit Typ, Kategorie und Stichtag → Kernliste |
| Wichtigste Lieferanten | Anzahlen je Kategorie (Rohstoff / Komponente / Auftragsfertiger), Abdeckungsgrad |
| Abhängigkeiten | Single-Source-Abhängigkeiten, geografische Konzentration, Dual-Sourcing |
| Standorte, Rohstoffe, Logistik | Fertigungsmodell, Produktionsstandorte, Materialexposure |
| Profil | Fließtext-Überblick zur Lieferkette |
4. **Downstream strukturieren** aus der Kunden-Sektion: Fließtext-Profil, Offenlegungsgrad und
Anzahl namentlich genannter Kunden, Angaben zur Kundenkonzentration bzw. zum Klumpenrisiko,
Kundentyp und Kanalanteile sowie regionale Verteilung.
5. **Als Karte ausgeben:** zwei Abschnitte („Zulieferer / Upstream", „Kunden / Downstream"),
die Partner als Liste oder Tabelle mit Kategorie und Stichtag, darunter Abhängigkeiten und
Konzentration als kurze Faktenzeilen.
## Feste Regeln
- **Nur Partner nennen, die im Feld stehen.** Keine Zulieferer aus Branchenwissen ergänzen, keine
„typischen" Lieferanten annehmen, keine Beziehung aus einem Rohstoff ableiten.
- **Stichtag je Beziehung.** Jeder Eintrag trägt einen eigenen Stichtag — mit ausgeben.
Uneinheitliche Stände kennzeichnen.
- **Abdeckung ehrlich benennen.** Die Sektion führt Angaben dazu, wie vollständig die Offenlegung
ist. Eine Liste mit sieben Partnern ist **nicht** „die Lieferkette", sondern der offengelegte
Ausschnitt — sag das.
- **Fehlt die Liste, gibt es keine Liste.** Dann nur den Fließtext wiedergeben und klar sagen,
dass keine namentlichen Zulieferer erfasst sind. Nicht ausweichen, nicht erfinden.
- **Keine firmenübergreifende Kette bauen.** Zulieferer nicht ihrerseits nachschlagen, um ein
mehrstufiges Netz zu zeichnen — das wäre Bulk-Nutzung. Eine Karte = eine Firma.
- **Keine Risikobewertung als Anlageurteil (§32).** Abhängigkeiten und Klumpenrisiken sind Fakten
aus der Offenlegung. Keine Schlussfolgerung auf Kurs, Bewertung oder Kauf/Verkauf.
- **Keine Quellen im Output.** Der Stichtag ist der Beleg.
## Beispiele
- *„Wer beliefert Volkswagen (DE0007664039)?"*
→ Pfad der Zulieferer-Liste ermitteln, dann `get_field("DE0007664039", "<sektion>.<feld>")`
→ Partner mit Kategorie und Stichtag auflisten, dazu der Hinweis, dass das die offengelegten
Zulieferer sind.
- *„Komplette Lieferketten- und Kundenkarte für BMW."*
→ `get_dossier(isin)` → Upstream-Abschnitt aus der Lieferketten-Sektion, Downstream-Abschnitt
aus der Kunden-Sektion, dabei sagen, dass die Kundenseite meist nur als Text und
Konzentrationsangaben vorliegt.
- *„Von welchen Rohstoffen hängt die Firma ab?"*
→ Rohstoff- und Abhängigkeitsangaben der Lieferketten-Sektion mit Stichtag wiedergeben;
fehlt beides, klar „nicht erfasst" sagen.
boersi-peer-vergleich4.43 KB
---
name: boersi-peer-vergleich
description: Stellt mehrere Firmen strukturiert nebeneinander (Kennzahlen, Marktanteile, Moat). Nutze diese Skill, wenn zwei oder mehr Firmen direkt verglichen werden sollen — Peer-Group, Konkurrenzvergleich, „X gegen Y", Kennzahlen-Gegenüberstellung. Aktiviert bei Fragen wie „Vergleiche SAP und Microsoft", „Wie steht BMW gegenüber seinen Peers da?", „Stell mir die drei größten deutschen Versicherer gegenüber".
---
# Boersi Peer-Vergleich
Mehrere Firmen **spaltenweise** gegenüberstellen: dieselben Felder, derselbe Aufbau, jeder Wert
mit Stichtag. Der Vergleich ist eine **Faktentabelle**, kein Ranking und kein Urteil.
## Tools
| Tool | Rolle im Vergleich |
|------|--------------------|
| `search_dossiers({sektor?, land?, min_vollstaendigkeit?}, cursor?)` | Peer-**Kandidaten** finden, wenn der Nutzer keine Liste vorgibt |
| `get_dossier(isin)` | **einmal** für die Referenzfirma — liefert die exakten `field_path`s |
| `get_field(isin, field_path)` | **das Arbeitspferd** — je Firma × je Vergleichsfeld ein Aufruf |
| `coverage_stats(isin)` | Vergleichbarkeit einordnen, wenn die Abdeckung stark schwankt |
## Warum nicht N × `get_dossier`
`get_dossier` ist kontingentiert (Plan `plus`: **5 Dossiers/Monat**), `get_field` nur
rate-limitiert. Ein Vergleich über 8 Firmen als 8 Dossiers verbrennt das Monatskontingent in
einem Aufruf. Deshalb:
> **Ein** `get_dossier` auf die Referenzfirma, um die genauen Feldpfade zu lernen —
> danach dieselben Pfade per `get_field` für alle übrigen Firmen.
## Ablauf
1. **Peer-Set festlegen.** Nennt der Nutzer die Firmen, nimm genau die. Sonst
`search_dossiers({ sektor, land })` und wähle daraus eine **begründete** Auswahl.
2. **Set klein halten.** Richtwert **≤ 8 Firmen × ≤ 5 Felder**. Der Aufwand ist das Produkt
beider Zahlen und läuft sonst gegen das Rate-Limit (`free` 15, `plus` 60, `pro` 240 Calls/Min).
3. **Feldpfade bestimmen.** `get_dossier` auf die erste Firma und die Pfade der gewünschten
Kennzahlen ablesen. Ein Pfad hat die Form `<sektion>.<feld>` und kann mehrstufig sein —
**nie raten**, immer aus der Dossier-Antwort übernehmen.
4. **Dimensionen wählen** — passend zur Frage, typischerweise:
| Dimension | Woraus |
|-----------|--------|
| Kennzahlen (Umsatz, Margen, Ergebnis je Aktie, Cashflow) | Sektion mit den Finanzkennzahlen |
| Marktanteil / Marktgröße | Sektion zur Marktposition |
| Moat (Marke, Kostenführerschaft, Netzwerkeffekte) | Sektion zum wirtschaftlichen Burggraben |
| Segment- und Länderstruktur | Sektion zu den Geschäftsbereichen |
| Wettbewerbsumfeld | Sektion zur Konkurrenz |
5. **Je Firma × Feld `get_field`.** Fehlt ein Feld bei einer Firma: Zelle „nicht erfasst" —
**nicht** durch einen ähnlichen Wert ersetzen und **nicht** aus anderen Zeilen schätzen.
6. **Tabelle bauen:** Zeilen = Kennzahl, Spalten = Firma. Stichtag je Zelle (oder je Zeile, wenn
einheitlich).
## Feste Regeln
- **Stichtage müssen zusammenpassen.** Werte mit unterschiedlichen `as_of_date` niemals
kommentarlos nebeneinanderstellen — Abweichung ausdrücklich markieren („Stand 2024-12-31 vs.
2023-12-31, eingeschränkt vergleichbar").
- **Keine Einheiten mischen.** Unterschiedliche Währungen oder Bezugsgrößen kennzeichnen, nicht
umrechnen. Der Server liefert keine Wechselkurse.
- **Kein Ranking als Empfehlung (§32).** „Höchste Marge" ist eine Beobachtung, „bester Titel",
„attraktivste Bewertung" oder ein Kursziel sind es nicht. Keine Kauf-/Verkaufs-Aussagen.
- **Kein Bulk.** Der Vergleich bleibt bei der angefragten Auswahl. Kein „alle Firmen des Sektors",
keine Tabelle über Dutzende Titel — `search_dossiers` liefert max. 25 Treffer pro Seite.
- **Auswahl offenlegen.** Sag, **wie** die Peer-Gruppe zustande kam (Nutzer-Vorgabe oder
Sektor-/Land-Filter) und dass sie nicht der vollständige Wettbewerb ist.
- **Keine Quellen im Output.** Interne Provenienz wird serverseitig entfernt.
## Beispiel
*„Vergleiche SAP und Microsoft bei Umsatz und EBIT-Marge."*
1. `get_dossier("DE0007164600")` → Feldpfade für Umsatz und EBIT-Marge ablesen.
2. `get_field("DE0007164600", "<umsatz-pfad>")`, `get_field("DE0007164600", "<ebitmarge-pfad>")`.
3. Dieselben zwei Pfade für `US5949181045` per `get_field`.
4. Tabelle: Zeilen Umsatz/EBIT-Marge, Spalten SAP/Microsoft, je Zelle Wert + Stichtag.
Abweichende Geschäftsjahre ausdrücklich vermerken. Kein Urteil, welche Firma „besser" ist.
boersi-screening2.21 KB
---
name: boersi-screening
description: Verwende diesen Skill, wenn mehrere Firmen aus Boersi nach Sektor, Land oder Datenabdeckung gefunden oder anhand konkreter Fakten verglichen werden sollen. Respektiere den serverseitigen Hard-Cap von 25 Treffern pro Seite und die Cursor-Paginierung; kein Bulk-Export und keine Anlageberatung.
---
# Boersi Screening und Faktenvergleich
Für mehrere Unternehmen ist `search_dossiers` der einzige Mehr-Firmen-Endpunkt.
Er liefert eine kleine Projektion je Firma und ist serverseitig begrenzt.
## Grenzen einhalten
- Es gibt kein Tool für „alle Firmen", Datenbank-Dumps oder Exporte.
- `search_dossiers` liefert höchstens 25 Treffer pro Seite. Ein höheres `limit` wird
serverseitig gedeckelt.
- Nutze `nextCursor` als `cursor` mit denselben Filtern nur, wenn weitere Seiten für die
Nutzerfrage nötig sind. Stoppe bei `nextCursor === null`.
- Ein Treffer enthält nur eine kleine Projektion. Für konkrete Werte danach sparsam
`get_field` oder, wenn wirklich nötig, `get_dossier` je ISIN nutzen.
## Vorgehen
1. Filtere eng mit `sektor`, ISO-2-`land` und/oder `min_vollstaendigkeit`.
2. Rufe bei weiteren benötigten Ergebnissen die nächste Seite per `cursor` ab.
3. Hole für einen Vergleich nur die angefragten Kennzahlen über `get_field` nach.
4. Nutze bei relevanter Vergleichbarkeit `coverage_stats(isin)`, um die Abdeckung
einzuordnen.
5. Gib Werte als kompakte Tabelle aus und nenne bei jedem Feld `as_of_date`.
## Verbindliche Antwortregeln
- Weise offen darauf hin, wenn noch Seiten existieren oder wegen des 25er-Caps nicht
weiter abgefragt wurden.
- Stelle unterschiedliche Stichtage nicht kommentarlos gegenüber.
- Beschreibe Fakten, aber keine Empfehlungen, Kursziele oder Aussagen wie „der beste Titel"
(§32).
- Quellen und interne Provenienz erscheinen nie im Output.
## Beispiel
„Vergleiche den Umsatz deutscher Technologie-Firmen in der Datenbank."
1. `search_dossiers({ land: "DE", sektor: "Technologie" })` aufrufen.
2. Falls nötig, mit `cursor: nextCursor` fortsetzen.
3. Je relevante ISIN `get_field(isin, "<sektion>.<feld>")` mit dem zuvor ermittelten
Umsatz-Pfad aufrufen.
4. Firma, ISIN, Umsatz und `as_of_date` tabellarisch ausgeben – ohne Anlageurteil.
boersi-sektor-ueberblick4.72 KB
---
name: boersi-sektor-ueberblick
description: Erstellt eine Branchen-Landschaft mit Vergleichsgruppe. Nutze diese Skill, wenn der Nutzer einen Überblick über einen Sektor oder eine Branche will — welche Firmen dort erfasst sind, wie die Landschaft aussieht, und eine sinnvolle Vergleichsgruppe daraus. Aktiviert bei Fragen wie „Gib mir einen Überblick über den Versicherungssektor", „Wie sieht die Tech-Branche in Deutschland aus?", „Welche Firmen gibt es im Sektor Grundstoffe?".
---
# Boersi Sektor-Überblick
Eine **Branchen-Landschaft**: welche Firmen des Sektors in der Datenbank liegen, wie sie sich
nach Land und Abdeckung verteilen, und eine daraus gebildete **Vergleichsgruppe** mit wenigen
Kennzahlen. Der Überblick beschreibt **den erfassten Bestand**, nicht den Markt.
## Tools
| Tool | Rolle |
|------|-------|
| `search_dossiers({sektor, land?, min_vollstaendigkeit?}, cursor?)` | **Einstieg** — liefert die Landschaft als Projektion `{isin, firma, sektor, land, gesamt_prozent}` |
| `coverage_stats()` / `coverage_stats(isin)` | Aggregat-Abdeckung bzw. Abdeckung einzelner Kandidaten |
| `get_field(isin, field_path)` | gezielt Kennzahlen für die Vergleichsgruppe nachladen |
| `get_dossier(isin)` | **einmal** für eine Referenzfirma, um die exakten Feldpfade zu lernen |
## Ablauf
1. **Sektor-Bezeichnung treffen.** `sektor` ist ein Freitext-Filter und muss zur Schreibweise im
Bestand passen (z. B. `Technologie`, `Versicherung`, `Finanzen`, `Grundstoffe`,
`Konsum zyklisch`, `Basiskonsumgueter`, `Industrie`). Liefert die Suche nichts, probiere eine
naheliegende Schreibweise und sag dem Nutzer, welche Bezeichnung getroffen hat.
2. **Landschaft holen.** `search_dossiers({ sektor })`, bei Bedarf zusätzlich `land` (ISO-2) oder
`min_vollstaendigkeit`. **Max. 25 Treffer pro Seite** (Plan `plus`: 10). Weitere Seiten nur per
`cursor`, und nur so viele, wie die Frage wirklich braucht.
3. **Landschaft beschreiben** — allein aus der Projektion, ohne Zusatz-Calls:
- Anzahl der gefundenen Firmen (und ob weitere Seiten offen sind),
- Verteilung nach `land`,
- Spannweite der Abdeckung (`gesamt_prozent`), Median/Beste grob benennen.
4. **Vergleichsgruppe bilden** — **explizit begründet**, typischerweise 3–6 Firmen nach einem
nachvollziehbaren Kriterium (gleiches Land, höchste Abdeckung, vom Nutzer genannt). Nenne das
Kriterium in der Ausgabe.
5. **Kennzahlen nachladen.** Feldpfade einmal per `get_dossier` an einer Referenzfirma lernen,
dann pro Gruppenmitglied `get_field` — nicht pro Firma ein Dossier ziehen
(`get_dossier` ist kontingentiert, `plus`: 5/Monat). Sinnvolle Dimensionen:
| Dimension | Woraus |
|-----------|--------|
| Umsatz, Margen, Ergebnis | Sektion mit den Finanzkennzahlen |
| Marktanteil / Marktgröße | Sektion zur Marktposition |
| Wettbewerbsumfeld, Marktstruktur | Sektion zur Konkurrenz |
| Mitarbeiterzahl, Sitz, Index | Sektion mit den Stammdaten |
6. **Ausgeben:** erst die Landschaft (Zahlen + Verteilung), dann die Vergleichsgruppe als Tabelle
mit Stichtagen. Für eine tiefere Gegenüberstellung → Skill *boersi-peer-vergleich*.
## Feste Regeln
- **Nie „der ganze Sektor".** Du siehst den **erfassten Bestand**, gefiltert und auf 25 Treffer je
Seite gedeckelt. Formuliere entsprechend: „in der Datenbank erfasst" statt „im Sektor gibt es".
- **Abbruch offenlegen.** Ist `nextCursor` gesetzt und du hast nicht weitergeladen, sag es
(„weitere Treffer vorhanden"). Keine Vollständigkeit vortäuschen.
- **Auswahlkriterium nennen.** Eine Vergleichsgruppe ohne offengelegtes Kriterium ist eine
versteckte Wertung. Sag, warum genau diese Firmen drin sind.
- **Abdeckung ≠ Qualität der Firma.** `gesamt_prozent` misst, wie vollständig das **Dossier** ist —
nicht, wie gut das Unternehmen dasteht. Nie als Bewertung verwenden.
- **Jeder Wert mit `as_of_date`**, unterschiedliche Stichtage kennzeichnen.
- **Keine Empfehlungen, keine Kursziele, kein „Top-Pick" (§32).** Auch kein implizites Ranking
(„die attraktivsten Titel des Sektors").
- **Kein Bulk.** Keine Erschöpfung aller Seiten, nur um eine lange Liste zu erzeugen.
- **Keine Quellen im Output.** Interne Provenienz wird serverseitig entfernt.
## Beispiel
*„Gib mir einen Überblick über deutsche Technologie-Firmen."*
1. `search_dossiers({ sektor: "Technologie", land: "DE" })` → Trefferliste + evtl. `nextCursor`.
2. Landschaft beschreiben: Anzahl, Abdeckungs-Spannweite, Hinweis auf offene Seiten.
3. Vergleichsgruppe: die 4 Firmen mit der höchsten `gesamt_prozent` — Kriterium nennen.
4. `get_dossier` auf die erste Firma für die Feldpfade, dann `get_field` für Umsatz und
EBIT-Marge je Gruppenmitglied.
5. Tabelle mit Stichtagen; kein Urteil, welcher Titel „der beste" ist.
boersi-tearsheet3.91 KB
---
name: boersi-tearsheet
description: Erzeugt aus dem Dossier ein sauberes Einseiten-Firmenprofil. Nutze diese Skill, wenn der Nutzer einen kompakten Steckbrief / ein Tearsheet / ein Einseiten-Profil zu genau einer Firma will — Stammdaten, Geschäftsmodell, Kennzahlen, Segmente, Wettbewerb auf einen Blick. Aktiviert bei Fragen wie „Mach mir ein Tearsheet zu SAP", „Einseiten-Profil für ISIN DE0007664039", „Firmensteckbrief Allianz", „Fass Volkswagen kompakt zusammen".
---
# Boersi Tearsheet (Einseiten-Firmenprofil)
Ein **Tearsheet** ist ein verdichtetes Faktenblatt zu **einer** Firma: alles Wesentliche auf
einer Seite, jeder Wert mit Stichtag. Grundlage ist **ein einziger** `get_dossier`-Aufruf.
## Tools
| Tool | Rolle im Tearsheet |
|------|--------------------|
| `get_dossier(isin)` | **die eine Quelle** — liefert alle Sektionen auf einmal |
| `coverage_stats(isin)` | Kopfzeile „Datenabdeckung" (Pflicht% / Gesamt% / Register%) |
| `list_sections(isin)` | nur bei Zweifel, ob die Firma überhaupt erfasst ist |
| `get_field(isin, field_path)` | **statt** des Tearsheets, wenn nur 1–3 Fakten gefragt sind |
> **`get_dossier` ist kontingentiert** (Plan `plus`: 5 Dossiers/Monat, `free`: gar keins).
> Rufe es für ein Tearsheet **genau einmal** auf und baue das Blatt vollständig aus dieser
> einen Antwort. Nachladen einzelner Felder danach nur per `get_field`.
## Ablauf
1. **ISIN klären.** Ohne ISIN erst über `search_dossiers` finden (siehe Skill *boersi-screening*).
2. **`get_dossier(isin)`** — einmal. Die Antwort enthält die thematischen Sektionen der Firma.
3. **`coverage_stats(isin)`** für die Abdeckungszeile.
4. **Blatt bauen** — feste Reihenfolge, damit Tearsheets vergleichbar bleiben:
| Block | Speist sich aus |
|-------|-----------------|
| **Kopf** | Firma · ISIN · Sektor · Land · Abdeckung aus `coverage_stats` |
| **Stammdaten** | Rechtsform, Hauptsitz, Gründungsjahr, Mitarbeiterzahl, Börsen/Index |
| **Geschäftsmodell** | Kurzbeschreibung, Wertversprechen, Einnahmequellen |
| **Kennzahlen** | Umsatz, EBIT-/EBITDA-Marge, Nettomarge, Ergebnis je Aktie, Free Cashflow |
| **Segmente** | Segment- und Länderumsätze samt Anteilen |
| **Wettbewerb** | Wettbewerbsumfeld und Marktstruktur, Marktanteil |
Die Zuordnung Block → Sektion ergibt sich aus der Dossier-Antwort; feste Pfade gibt es nicht.
5. **Lücken kennzeichnen.** Fehlt ein Block im Dossier, schreib „nicht erfasst" — nicht weglassen,
nicht aus anderen Feldern herleiten.
## Feste Regeln
- **Jeder Wert mit `as_of_date`.** Ein Tearsheet ohne Stichtage ist wertlos. Steht in einem Block
ein einheitlicher Stichtag, nenn ihn einmal als Block-Kopf; sonst je Zeile.
- **Nie schätzen, nie rechnen, was nicht dasteht.** Keine abgeleiteten Kennzahlen (kein selbst
gebildetes KGV, keine hochgerechneten Jahreswerte), keine Peer-Einordnung aus dem Gedächtnis.
- **Keine Empfehlungen, keine Kursziele (§32).** Das Tearsheet endet bei der Faktenlage. Die
Analysten-Sektion liefert bewusst keine Urteile — erfinde keine, auch nicht als „Einschätzung".
- **Keine Quellenangaben.** Interne Provenienz wird serverseitig entfernt; der Stichtag ist der
Beleg. Frage nicht danach und behaupte keine Einzelquelle.
- **Ein Tearsheet = eine Firma.** Für mehrere Firmen nebeneinander → Skill *boersi-peer-vergleich*.
- **Zahlenformat:** Punkt-Dezimal aus der DB für die deutsche Ausgabe auf Komma umstellen; Einheit
und Währung aus dem Feld übernehmen, nie umrechnen.
## Beispiele
- *„Mach mir ein Tearsheet zu Volkswagen (DE0007664039)."*
→ `get_dossier("DE0007664039")` + `coverage_stats("DE0007664039")` → Blatt in obiger Reihenfolge.
- *„Nur der Umsatz von SAP."* → **kein** Tearsheet: `get_field(...)` (Skill *boersi-dossier-lookup*)
— spart das Dossier-Kontingent.
- *„Tearsheet zu einer Firma ohne Kennzahlen-Sektion."*
→ Block „Kennzahlen: nicht erfasst" ausweisen, Rest normal bauen.
Package details
Publisher declarations from the archived package. These are separate from our research and the live service's terms.
- Package author
- Boersi
Package observed Oct 2, 2026.
Technical details
- First seen
- Sep 30, 2026 · 22:02 UTC
- Last seen
- Oct 2, 2026 · 00:00 UTC
- Collection status
- Collected
plugin_asdk_app_6a81c080848081919eb21d4f4f751c28
Download plugin data (JSON)