# Tool-Referenz 13 Tools, nach Fachgebiet gruppiert. Die Tools mit vielen Operationen (`calculus`, `matrix`, `number_theory` …) nutzen ein `operation`-Enum. So bleibt die Tool-Liste für das LLM überschaubar, und die Schemas bleiben trotzdem präzise. Alle Tools sind `readOnly`, `idempotent` und `openWorld=false` annotiert. Clients können sie also ohne Rückfrage freigeben (z. B. Cline `autoApprove`). ## Gemeinsame Konventionen **Ausdrucks-Syntax** (für alle String-Ausdrücke): | Schreibweise | Bedeutung | |---|---| | `x^2` oder `x**2` | Potenz | | `2x`, `3(x+1)` | implizite Multiplikation | | `5!` | Fakultät | | `a % b`, `Mod(a, b)` | Modulo | | `pi`, `e`, `I`, `oo` | π, Euler'sche Zahl, imaginäre Einheit, ∞ | | `sin(30*deg)` | Grad (deg = π/180) | | `ln(x)`, `log(x)`, `log(x, 2)`, `log10(x)` | Logarithmen | | `sqrt`, `cbrt`, `root(x, n)`, `abs`, `floor`, `ceiling` | Wurzeln, Betrag, Runden | | `sin cos tan …`, `asin`/`arcsin` …, `sinh …` | Trigonometrie | | `factorial`, `binomial`, `gamma`, `erf`, `min`, `max`, `gcd`, `lcm` | Sonderfunktionen | | `x^2 = 4` | Gleichung (genau ein `=`) | | `x^2 < 4`, `<=`, `>`, `>=`, `!=` | Ungleichungen | - Dezimalpunkt, kein Komma. Dezimalzahlen werden **exakt** als Brüche behandelt (`0.1 + 0.2 = 3/10`). - Unicode wird normalisiert: `π × ÷ − ² ³ √ ∞ ≤ ≥ ≠`. - Mehrbuchstabige Namen sind **ein** Symbol (`rate*time`, nicht `r*a*t*e`). **Ergebnisse:** - `result` bzw. `exact`: symbolisches Ergebnis in derselben Syntax, direkt als Eingabe für das nächste Tool verwendbar - `latex`: für die Darstellung - `numeric`: Dezimalwert als String, damit keine Präzision verloren geht - Sehr lange Ergebnisse werden gekürzt (`MCP_CALC_MAX_OUTPUT_LENGTH`), große Ganzzahlen enthalten zusätzlich `digits`. **Fehler** kommen als Tool-Fehler (`isError: true`) mit einer verständlichen Meldung zurück, z. B. `matrix is singular (determinant 0) and has no inverse; try 'pseudo_inverse'`. Das LLM kann darauf reagieren und den Aufruf korrigieren. --- ## evaluate Wert exakt und dezimal berechnen, mit beliebiger Präzision. | Parameter | Typ | Default | | |---|---|---|---| | `expression` | string | – | Ausdruck | | `precision` | int | 15 | signifikante Stellen (1–1000) | | `variables` | object | – | Werte einsetzen, z. B. `{"x": 2, "r": "1/3"}` | ```json {"expression": "1000 * (1 + 0.05)^10", "precision": 12} → {"exact": "16679880978201/10240000000", "numeric": "1628.89462678", ...} ``` ## transform Symbolisch umformen. | Parameter | Typ | Default | | |---|---|---|---| | `expression` | string | – | | | `operation` | enum | `simplify` | `simplify`, `expand`, `factor`, `collect`, `cancel`, `apart`, `together`, `trigsimp`, `expand_trig`, `powsimp`, `expand_log`, `logcombine`, `radsimp`, `rationalize_denominator`, `nsimplify`, `substitute` | | `variable` | string | – | Hauptvariable für `collect`, `apart`, `factor` | | `substitutions` | object | – | für `substitute`: `{"x": "2t"}` | | `assume` | enum | `none` | `none`, `real`, `positive`, `integer` | `equivalent_to_input: true` bestätigt, dass die Umformung mathematisch identisch ist. `nsimplify` findet geschlossene Formen zu Dezimalzahlen (`1.41421356…` → `sqrt(2)`). ## solve Gleichungen, Gleichungssysteme, Ungleichungen. | Parameter | Typ | Default | | |---|---|---|---| | `equations` | string \| string[] | – | eine Gleichung oder ein System; bloßer Ausdruck = `… = 0` | | `variables` | string[] | alle freien | wonach aufgelöst wird | | `domain` | enum | `complex` | `complex`, `real`, `positive`, `integer` | | `numeric_only` | bool | false | numerisch lösen (Newton / Polynomwurzeln) | | `initial_guess` | number[] | 1.0 je Variable | Startwerte für `numeric_only` | | `precision` | int | 15 | | - Endliche Lösungen: `solutions: [{"x": "2"}, {"x": "3"}]` plus `numeric` - Periodische Lösungen (z. B. `sin(x) = 1/2`): `solution_set` als Menge plus `principal_solutions` - Unterbestimmte Systeme: parametrisierte Lösung plus Hinweis in `note` - Ungleichungen: `solution_set: "Interval.open(-2, 2)"` - Transzendente Gleichungen ohne geschlossene Form: `numeric_only: true` ## calculus | `operation` | benötigt | Ergebnis | |---|---|---| | `derivative` | `variable`, `order` | Ableitung; mehrere Variablen `"x, y"` = gemischte partielle Ableitung | | `integral` | optional `lower`+`upper` | unbestimmt (+C-Hinweis) oder bestimmt; fällt numerisch zurück, wenn keine geschlossene Form existiert | | `limit` | `point`, `direction` (`+-`, `+`, `-`) | Grenzwert | | `series` | `point` (Default 0), `terms` | Taylorreihe mit O-Term, zusätzlich `polynomial` | | `sum` / `product` | `lower`, `upper` (auch `oo`) | geschlossene Form oder numerisch; `converges` bei unendlichen Summen | | `gradient`, `hessian` | `variable: "x, y"` | Vektor / Matrix | | `jacobian` | `expression: "f1, f2"`, `variable: "x, y"` | Matrix | Weitere Parameter: `assume`, `precision`. ## analyze_function Komplette Kurvendiskussion einer reellen Funktion f(x) in einem Aufruf: Definitionsbereich, f′/f″/f‴, Nullstellen, y-Achsenabschnitt, Extrema mit Art, Wendepunkte, Symmetrie, Grenzverhalten ±∞, senkrechte Asymptoten, Monotonie- und Krümmungsintervalle. Teilschritte, die sich nicht bestimmen lassen, liefern `"not determinable"`, statt den ganzen Aufruf scheitern zu lassen. | Parameter | Default | |---|---| | `expression` | – | | `variable` | `x` | | `precision` | 10 | ## solve_ode Gewöhnliche Differentialgleichungen, symbolisch gelöst. | Parameter | Default | | |---|---|---| | `equation` | – | Strich-Notation: `"y'' + 2y' + y = sin(x)"` | | `function` | `y` | Name der gesuchten Funktion | | `variable` | `x` | unabhängige Variable | | `initial_conditions` | – | `{"y(0)": 1, "y'(0)": 0}` | Ohne Anfangsbedingungen kommt die allgemeine Lösung mit `C1, C2, …`. Zusätzlich wird das Lösungsverfahren (`method`) zurückgegeben. ## matrix | Parameter | Default | | |---|---|---| | `operation` | – | siehe unten | | `matrix` | – | Liste von Zeilen `[[1, 2], [3, 4]]`; Einträge dürfen Ausdrücke sein (`"1/3"`, `"a"`); flache Liste = Spaltenvektor | | `other` | – | zweiter Operand bzw. rechte Seite `b` bei `solve` | | `exponent` | – | für `power` | | `numeric_mode` | false | Gleitkomma (NumPy) statt exakt | Operationen (exakt): `determinant`, `inverse`, `transpose`, `rank`, `trace`, `rref`, `eigenvalues`, `eigenvectors`, `characteristic_polynomial`, `diagonalize`, `nullspace`, `columnspace`, `multiply`, `add`, `subtract`, `power`, `solve`, `dot`, `cross`, `norm`, `pseudo_inverse`. Nur numerisch: `svd`, `condition_number`. Bei `numeric_mode` löst `solve` nicht-quadratische Systeme per Least Squares. ## statistics Deskriptive Statistik: count, sum, mean, median, mode, min/max, range, variance, std_dev, Quartile, IQR, Standardfehler, Variationskoeffizient, Schiefe, Exzess, geometrisches/harmonisches Mittel. | Parameter | Default | | |---|---|---| | `data` | – | Zahlen | | `sample` | true | Stichprobe (n−1) oder Grundgesamtheit (n) | | `percentiles` | – | z. B. `[5, 95]` | | `y` | – | gepaarte zweite Variable: Kovarianz, Pearson, Spearman | ## regression | Parameter | Default | | |---|---|---| | `x`, `y` | – | Datenpunkte | | `model` | `linear` | `linear`, `polynomial`, `exponential`, `logarithmic`, `power` | | `degree` | 2 | für `polynomial` | | `predict` | – | x-Werte für Vorhersagen | Liefert Koeffizienten, Gleichung, R², RMSE; beim linearen Modell zusätzlich r, p-Wert und Standardfehler. ## probability | Parameter | | |---|---| | `distribution` | `normal(mean, std)`, `t(df)`, `chi2(df)`, `f(dfn, dfd)`, `exponential(rate)`, `uniform(low, high)`, `lognormal(mu, sigma)`, `gamma(shape, scale)`, `beta(a, b)`, `binomial(n, p)`, `poisson(lambda)`, `geometric(p)`, `hypergeometric(population, successes, draws)`, `negative_binomial(successes, p)` | | `operation` | `pdf` (Dichte bzw. P(X=x)), `cdf` P(X≤x), `sf` P(X>x), `between` P(lower 7) = P(X >= 8)"`. Das verhindert die typischen Off-by-one-Fehler von LLMs. ## hypothesis_test | `test` | Eingaben | |---|---| | `one_sample_t` | `sample`, `mu` | | `two_sample_t` | `sample`, `sample2`, `equal_variance` (Default Welch) | | `paired_t` | `sample`, `sample2` | | `one_way_anova` | `groups` | | `mann_whitney` | `sample`, `sample2` | | `wilcoxon` | `sample` + `sample2` oder `mu` | | `chi2_goodness_of_fit` | `sample` (beobachtete Häufigkeiten), `expected` (Häufigkeiten oder Wahrscheinlichkeiten) | | `chi2_independence` | `table` (Kontingenztafel), zusätzlich Cramér's V | | `shapiro_wilk` | `sample` | | `binomial` | `sample: [Erfolge, Versuche]`, `p` | | `pearson_correlation` | `sample`, `sample2` | Gemeinsam: `alternative` (`two-sided`, `less`, `greater`) und `alpha`. Ergebnis: Teststatistik, p-Wert, gegebenenfalls Freiheitsgrade und Konfidenzintervall, `reject_null` und eine Schlussfolgerung im Klartext. ## number_theory | `operation` | `values` | |---|---| | `gcd`, `lcm` | `[a, b, …]` | | `factorize`, `is_prime`, `next_prime`, `previous_prime`, `divisors`, `totient`, `factorial`, `fibonacci` | `[n]` | | `nth_prime` | `[k]` | | `primes_in_range` | `[low, high]` | | `mod` | `[a, m]` | | `mod_pow` | `[base, exp, mod]` | | `mod_inverse` | `[a, m]` | | `crt` | Reste in `values`, Moduli in `moduli` | | `binomial`, `permutations` | `[n, k]` | | `continued_fraction` | `[x]` (z. B. `"415/93"`, `"sqrt(2)"`) | | `base_convert` | `["ff"]` plus `from_base`, `to_base` (2–36) | Ganzzahlen über 2^53 bitte als String übergeben. JSON-Zahlen verlieren sonst in manchen Clients Stellen. Große Ergebnisse kommen ebenfalls als String zurück. ## convert_units | Parameter | Default | | |---|---|---| | `quantity` | – | `"100 km/h"`, `"25 degC"`, `"5 km/h * 2 h"`, `"1.5 kg * 9.81 m/s^2"` | | `to_unit` | – | Zieleinheit; ohne Angabe SI-Basiseinheiten plus `compact` | | `precision` | 12 | | Die Dimensionen werden geprüft (`kg` → `m` ergibt einen Fehler). Unterstützt werden SI- und imperiale Einheiten, Präfixe, Temperaturen, Datengrößen (`B`, `KiB`, `MB`), Energie, Druck usw. (Pint-Einheitenregister). ## Ressource `calculator://syntax` Kurzreferenz der Syntax und Verteilungen als Text. Dieselbe Information steckt auch in den Server-`instructions`, die jeder Client beim Verbindungsaufbau erhält.