Ein gehosteter Remote-MCP-Server, der deinem KI-Agenten dieselben Design-Tools gibt, die Menschen auf jinero.online nutzen: 22 Tools für Schriftarten (Suche, CSS, Dateien, Erkennung per Bild), Farbberechnungen (Kontrast, Schattierungen, Farbnamen, Extraktion), kuratierte Paletten, Code (minifizieren, konvertieren, erkennen), SVG-Optimierung und SCSS-Helfer. Jedes Tool ist ein schlanker Wrapper um die öffentliche REST-API – ein Vertrag, ein Verhalten. Veröffentlicht in der offiziellen MCP-Registry als online.jinero/jinero; das Manifest liegt unter /.well-known/mcp/server.json.

# Remote endpoint (Streamable HTTP)
https://jinero.online/mcp

# Peek at the tool list without any client:
curl -s -X POST https://jinero.online/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Funktioniert mit jedem MCP-Client, der Remote-Server (Streamable HTTP) unterstützt: Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI und Co. Ältere Clients, die nur stdio sprechen, lassen sich über npx mcp-remote https://jinero.online/mcp anbinden.

# Claude Code (CLI)
claude mcp add --transport http jinero https://jinero.online/mcp
// Claude Desktop / Cursor / Cline — mcpServers config
{
  "mcpServers": {
    "jinero": {
      "type": "http",
      "url": "https://jinero.online/mcp"
    }
  }
}

Jedes Tool deklariert MCP-Annotationen, sodass Clients und Sicherheitsscanner sein Verhalten prüfen können, statt zu raten: Alle 22 Tools sind nur lesend und idempotent. Übermittelter Code und SVG werden als Text geparst und umgewandelt – nie ausgeführt, nie gespeichert. Hochgeladene Bilder (Schriftarterkennung, Farbextraktion) werden im Arbeitsspeicher verarbeitet und sofort gelöscht. Nur drei Tools rufen eine vom Nutzer angegebene URL ab (recognize_font, extract_colors, svg_to_datauri) – sie sind als open-world markiert, und die Abrufe sind gegen SSRF abgesichert (nur öffentliche http(s)-Adressen, mit Größenlimit). Anonym, ohne API-Schlüssel, insgesamt auf 60 Anfragen/min pro IP begrenzt; rechenintensive Tools haben eigene, strengere Limits (recognize_font 5/min, extract_colors 10/min, Code-/SVG-Umwandlungen 30/min), die in der Beschreibung jedes Tools stehen.

// Annotations served in tools/list for every tool
{
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": false   // true only on the 3 URL-fetching tools
}

Durchsucht den kostenlosen Schriftarten-Katalog nach Name, Kategorie, Stil-Tags, Sprachabdeckung, Variable-/Monospace-Flags und Anzahl der Schnitte. Liefert eine paginierte Liste von Schriftfamilien mit Vorschau-URLs und Metadaten zu jedem Schnitt.

TOOL search_fonts nur lesend idempotent
ParameterTypBeschreibung
name string Unscharfe Namenssuche.
category string Kommagetrennte Kategorien, z. B. 'serif,sans'.
langs string Kommagetrennte Sprachcodes, z. B. 'latin,cyrillic' – ALLE müssen unterstützt werden.
style string Kommagetrennte Stil-Tags (handwriting, script, display, slab, rounded, condensed, expanded, stencil, pixel, blackletter, outline, retro) – ALLE müssen zutreffen.
variable boolean Nur Variable Fonts.
monospace boolean Nur Monospace-Schriftarten.
styles_min / styles_max integer Unter- und Obergrenze für die Anzahl der Schnitte.
order string likes (Standard) · downloads · views · name · created_at.
sort string asc · desc.
per_page / page integer Paginierung (per_page 1–100, Standard 24).
// tools/call arguments
{ "name": "inter", "category": "sans", "per_page": 2 }
Beispielantwort
{
  "current_page": 1,
  "data": [
    {
      "name": "Inter Tight",
      "slug": "inter-tight",
      "category": "sans",
      "variable": true,
      "monospace": false,
      "langs": ["latin", "cyrillic", "greek"],
      "style_tags": [],
      "styles_count": 18,
      "downloads": 2800,
      "likes_count": 1392,
      "regular_url": "https://jinero.online/storage/fonts/inter-tight/inter-tight-regular.woff2",
      "styles": [ { "weight": 100, "italic": false, "name": "Thin" }, "…" ]
    }
  ],
  "per_page": 2,
  "total": 4
}

Erkennt, welche Schriftart in einem Bild verwendet wird. Basiert auf unserem eigenen CNN-Embedding-Modell, trainiert auf dem Jinero-Katalog – es vergleicht Schriftarten anhand ihrer visuellen Form und braucht daher weder OCR noch lesbaren Text (Lateinisch & Kyrillisch). Sende einen engen Ausschnitt mit einer Textzeile als öffentliche image_url oder als image_base64 (rohes Base64 / Data-URI – ideal für einen lokalen Screenshot, den dein Agent gerade gemacht hat). Das Bild wird im Arbeitsspeicher verarbeitet und sofort gelöscht. ~200 ms pro Aufruf.

TOOL recognize_font nur lesend idempotent ruft externe URLs ab
ParameterTypBeschreibung
image_url string Öffentliche http(s)-URL des Bildes. Gib entweder diese oder image_base64 an.
image_base64 string Base64-kodiertes Bild (rohes Base64 oder data:image/…;base64-URI), max. 8 MB nach dem Dekodieren. Gib entweder dieses oder image_url an.
top_k integer Anzahl der zurückgegebenen Schriftart-Treffer (3–20, Standard 8).
// tools/call arguments — URL variant
{ "image_url": "https://example.com/heading-crop.png", "top_k": 5 }

// …or send a local screenshot directly
{ "image_base64": "data:image/png;base64,iVBORw0KGgo…", "top_k": 5 }
Beispielantwort
{
  "matches": [
    { "slug": "lunasima", "name": "Lunasima", "category": "sans", "score": 0.8331,
      "family_url": "https://jinero.online/fonts/lunasima" },
    { "slug": "tajawal", "name": "Tajawal", "category": "sans", "score": 0.8213,
      "family_url": "https://jinero.online/fonts/tajawal" }
  ],
  "note": "Matched by a trained CNN embedding (visual shape), no OCR."
}

Vollständige Metadaten einer Schriftfamilie per Slug: Designer, Lizenz, Kategorie, Sprachabdeckung, variable Achsen, alle Schnitte sowie fertige URLs für Download, CSS und Dateien.

TOOL get_font nur lesend idempotent
ParameterTypBeschreibung
slug string Slug der Familie, z. B. 'inter', 'playfair-display'.
// tools/call arguments
{ "slug": "inter" }
Beispielantwort
{
  "name": "Inter",
  "slug": "inter",
  "category": "sans",
  "designer": "Rasmus Andersson",
  "license": "OFL",
  "license_url": "https://openfontlicense.org/open-font-license-official-text/",
  "variable": true,
  "monospace": false,
  "langs": ["latin", "cyrillic", "greek", "vietnamese"],
  "styles_count": 18,
  "download_url": "https://jinero.online/api/v1/fonts/inter/download",
  "files_url": "https://jinero.online/api/v1/fonts/inter/files",
  "css_url": "https://jinero.online/api/v1/fonts/css?family=inter",
  "fonts": [ { "weight": 400, "italic": false, "name": "Regular" }, "…" ]
}

Listet alle Schriftdateien einer Familie auf – Schriftstärke, Kursiv-Flag, Name des Schnitts, Format und eine direkte woff2/ttf-URL mit Dateigröße. Praktisch, wenn der Agent eigene @font-face-Regeln schreibt oder bestimmte Schriftstärken herunterlädt.

TOOL get_font_files nur lesend idempotent
ParameterTypBeschreibung
slug string Slug der Familie, z. B. 'inter'.
// tools/call arguments
{ "slug": "inter" }
Beispielantwort
{
  "family": "Inter",
  "slug": "inter",
  "files": [
    { "weight": 100, "italic": false, "style": "Thin", "format": "woff2",
      "url": "https://jinero.online/storage/fonts/inter/inter-thin.woff2", "size": 111816 },
    { "weight": 400, "italic": false, "style": "Regular", "format": "ttf",
      "url": "https://jinero.online/storage/fonts/inter/inter-regular.ttf", "size": 876576 }
  ]
}

Erzeugt einfügefertiges @font-face-CSS für eine Familien-Spezifikation – Google-Fonts-kompatible Syntax, inklusive variabler Bereiche. Gibt reinen CSS-Text zurück, den der Agent direkt in ein Stylesheet einfügen kann.

TOOL get_fonts_css nur lesend idempotent
ParameterTypBeschreibung
family string Familien-Spezifikation, z. B. "inter:wght@400,700" oder ein variabler Bereich "inter:[email protected]".
display string Wert für font-display: swap (Standard) · auto · block · fallback · optional.
// tools/call arguments
{ "family": "inter:wght@400,700", "display": "swap" }
Beispielantwort
/* jinero.online Fonts API */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('https://jinero.online/storage/fonts/inter/inter-regular.woff2') format('woff2');
}
/* … one block per requested weight … */

Gibt die direkte ZIP-Download-URL einer Schriftfamilie zurück (alle Schnitte als TTF + WOFF2 plus fertige fonts.css). Das Tool lädt selbst nichts herunter – es übergibt die URL an den Nutzer oder Agenten.

TOOL get_font_download_url nur lesend idempotent
ParameterTypBeschreibung
slug string Slug der Familie, z. B. 'inter'.
// tools/call arguments
{ "slug": "inter" }
Beispielantwort
{
  "slug": "inter",
  "download_url": "https://jinero.online/api/v1/fonts/inter/download"
}

WCAG-2.1-Kontrastverhältnis zwischen Vorder- und Hintergrundfarbe, mit AA/AAA-Flags (bestanden/nicht bestanden) für normalen und großen Text – dieselbe sRGB-Berechnung, die auch Lighthouse nutzt.

TOOL check_contrast nur lesend idempotent
ParameterTypBeschreibung
fg string Vordergrundfarbe: hex, rgb() oder hsl().
bg string Hintergrundfarbe, gleiche Formate.
// tools/call arguments
{ "fg": "#1d4ed8", "bg": "#ffffff" }
Beispielantwort
{
  "success": true,
  "ratio": 6.29,
  "ratio_string": "6.29:1",
  "aa":  { "normal": true,  "large": true },
  "aaa": { "normal": false, "large": true },
  "thresholds": { "aa_normal": 4.5, "aa_large": 3, "aaa_normal": 7, "aaa_large": 4.5 }
}

Ein komplettes Design-Token-Set aus einer Grundfarbe: Tönungen, Schattierungen und fünf Harmonien (komplementär, analog, triadisch, split-komplementär, tetradisch). Jede Farbe enthält hex/rgb/hsl-Strings, Luminanz und eine empfohlene Textfarbe.

TOOL get_color_shades nur lesend idempotent
ParameterTypBeschreibung
hex string Grundfarbe: hex, rgb() oder hsl().
step string Schrittweite in Prozent: 5, 10 (Standard), 20, 25.
limit integer Obergrenze für Tönungen/Schattierungen (standardmäßig bis ~100 %).
// tools/call arguments
{ "hex": "#3b82f6", "step": "20", "limit": 2 }
Beispielantwort
{
  "success": true,
  "base": { "hex": "#3b82f6", "hsl_string": "hsl(217, 91%, 60%)", "luminance": 0.2355,
            "text_color": "#000000", "contrast_on_white": 3.68 },
  "tints":  [ { "percent": 20, "hex": "#629bf8", "…": "…" } ],
  "shades": [ { "percent": 20, "hex": "#2f68c5", "…": "…" } ],
  "harmonies": { "complementary": ["…"], "analogous": ["…"], "triadic": ["…"] }
}

Der passendste lesbare Name für eine oder mehrere Farben – der wahrnehmungsmäßig nächste Treffer in einem Datensatz mit ~31.000 Farben. Ideal zum Beschriften extrahierter Paletten oder generierter Farbfelder.

TOOL name_color nur lesend idempotent
ParameterTypBeschreibung
hex string Ein Hex-Wert oder mehrere, durch Kommas getrennt (bis zu 100), z. B. "#3b82f6,#000,#ff7f50".
// tools/call arguments
{ "hex": "#3b82f6,#000,#ff7f50" }
Beispielantwort
{
  "success": true,
  "count": 3,
  "colors": [
    { "input": "#3B82F6", "name": "Dodger Blue", "hex": "#3E82FC", "exact": false, "distance": 10.91 },
    { "input": "#000000", "name": "Black",       "hex": "#000000", "exact": true,  "distance": 0 },
    { "input": "#FF7F50", "name": "Coral",       "hex": "#FF7F50", "exact": true,  "distance": 0 }
  ]
}

Extrahiert eine Palette der dominanten Farben aus einem Bild – k-Means-Clustering mit den Modi balanced / vibrant / muted. Sende eine öffentliche image_url oder image_base64 (rohes Base64 / Data-URI – ideal für einen lokalen Screenshot). Das Bild wird im Arbeitsspeicher verarbeitet und nie gespeichert. Jede Farbe kommt mit Namen zurück: eine beschriftete Palette mit einem einzigen Aufruf.

TOOL extract_colors nur lesend idempotent ruft externe URLs ab
ParameterTypBeschreibung
image_url string Öffentliche Bild-URL (serverseitiger Abruf, max. 10 MB, nur image/*). Gib entweder diese oder image_base64 an.
image_base64 string Base64-kodiertes Bild (rohes Base64 oder data:image/…;base64-URI), max. 10 MB nach dem Dekodieren. Gib entweder dieses oder image_url an.
count integer Anzahl der zurückgegebenen Farben: 2–16, Standard 8.
mode string balanced (Standard) · vibrant · muted.
// tools/call arguments — URL variant
{ "image_url": "https://example.com/cover.jpg", "count": 6, "mode": "vibrant" }

// …or send a local screenshot directly
{ "image_base64": "data:image/png;base64,iVBORw0KGgo…", "count": 6 }
Beispielantwort
{
  "success": true,
  "mode": "vibrant",
  "colors": [
    { "hex": "#f9f9f9", "percent": 90.8, "name": "White", "name_exact": false,
      "rgb": { "r": 249, "g": 249, "b": 249 }, "hsl": { "h": 0, "s": 0, "l": 97.6 } },
    { "hex": "#1d1c1b", "percent": 5.8, "name": "Cod Gray", "name_exact": false, "…": "…" }
  ]
}

Durchsucht den Katalog kuratierter Farbpaletten nach Name, Ton, Temperatur, Stimmung, Harmonie, exakter Farbanzahl und Tags. Liefert eine paginierte Liste – jede Palette mit ihren Hex-Farben und ihrer Klassifizierung.

TOOL search_palettes nur lesend idempotent
ParameterTypBeschreibung
name string Unscharfe Namenssuche.
tone string light · dark · mixed.
temperature string warm · cool · neutral.
mood string z. B. pastel, muted, earthy, vibrant, monochrome.
harmony string z. B. analogous, complementary, triadic, monochromatic.
color_count integer Exakte Anzahl der Farben (2–10).
tags array Tag-Slugs – ALLE müssen zutreffen.
order string newest (Standard) · popular · name.
per_page / page integer Paginierung (per_page 1–100, Standard 24).
// tools/call arguments
{ "tone": "light", "mood": "pastel", "per_page": 1 }
Beispielantwort
{
  "current_page": 1,
  "data": [
    {
      "id": 6267,
      "name": "5-Color Darling Bud Palette",
      "colors": ["#ffffff", "#e7b7fb", "#b0cbfc", "#f98bf7", "#f7cefc"],
      "color_count": 5,
      "tone": "mixed",
      "temperature": "neutral"
    }
  ],
  "total": 6267
}

Eine Palette per ID: Hex-Farben, Name, Ton, Temperatur, Stimmung, Harmonie und Tags.

TOOL get_palette nur lesend idempotent
ParameterTypBeschreibung
id integer ID der Palette (aus search_palettes).
// tools/call arguments
{ "id": 6267 }
Beispielantwort
{
  "success": true,
  "palette": {
    "id": 6267,
    "name": "5-Color Darling Bud Palette",
    "colors": ["#ffffff", "#e7b7fb", "#b0cbfc", "#f98bf7", "#f7cefc"],
    "color_count": 5,
    "tone": "mixed",
    "temperature": "neutral",
    "tags": []
  }
}

Minifiziert oder formatiert JS, CSS, HTML, SVG, JSON oder XML. Der Code wird nur geparst und als Text neu ausgegeben – nie ausgeführt, nie gespeichert. Setze type=auto, damit der Server die Sprache selbst erkennt.

TOOL minify_code nur lesend idempotent
ParameterTypBeschreibung
code string Quelltext, der umgewandelt werden soll.
type string js · css · html · svg · json · xml · auto.
mode string minify (Standard) · beautify.
keep_license boolean Lizenzkommentare /*! … */ beim Minifizieren beibehalten.
// tools/call arguments
{ "code": ".a { color: #ffffff; margin: 0px; }", "type": "css" }
Beispielantwort
{
  "success": true,
  "type": "css",
  "mode": "minify",
  "output": ".a{color:#fff;margin:0}",
  "original_size": 47,
  "output_size": 23,
  "savings_percent": 51.1
}

Erkennt Sprache bzw. Format eines Code-Snippets – rein statische Analyse, das Snippet wird nie ausgeführt. Meldet außerdem, welche Konverter das erkannte Format als Eingabe akzeptieren.

TOOL detect_code nur lesend idempotent
ParameterTypBeschreibung
code string Zu analysierendes Snippet. Max. 200.000 Zeichen.
// tools/call arguments
{ "code": "const x = () => 42;" }
Beispielantwort
{
  "success": true,
  "detected_type": "esm",
  "confidence": "medium",
  "available_targets": [ { "to": "cjs", "label": "ESM → CommonJS" } ]
}

Konvertiert Code zwischen Textformaten – JSON↔YAML, JSON→TOML, CSS↔SCSS, ESM→CJS und mehr. Reine Textumwandlung: Der Quellcode wird geparst und neu serialisiert, nie ausgeführt, nie gespeichert. Die vollständige Liste der from/to-Paare und die Optionen jedes Konverters liefert list_code_converters.

TOOL convert_code nur lesend idempotent
ParameterTypBeschreibung
code string Zu konvertierender Quellcode.
from string ID des Quellformats (siehe list_code_converters).
to string ID des Zielformats.
options object Konverterspezifische Optionen (siehe optionsSchema in list_code_converters).
// tools/call arguments
{ "code": "{\"name\":\"jinero\"}", "from": "json", "to": "yaml" }
Beispielantwort
{
  "success": true,
  "from": "json",
  "to": "yaml",
  "output": "name: jinero\n",
  "notes": null
}

Verzeichnis der verfügbaren Konverter: from/to-IDs, lesbare Bezeichnungen und das Optionsschema jedes Konverters. Keine Parameter.

TOOL list_code_converters nur lesend idempotent
// tools/call arguments
{ }
Beispielantwort
{
  "success": true,
  "converters": [
    { "id": "json_to_yaml", "from": "json", "to": "yaml", "label": "JSON → YAML",
      "optionsSchema": { "indent": [2, 4], "sortKeys": false } },
    { "id": "yaml_to_json", "from": "yaml", "to": "json", "label": "YAML → JSON", "…": "…" }
  ]
}

Optimiert und bereinigt SVG-Markup mit SVGO – reine Markup-Umwandlung, nichts wird ausgeführt oder gespeichert. Gibt das minifizierte SVG plus die Größe vorher/nachher zurück.

TOOL optimize_svg nur lesend idempotent
ParameterTypBeschreibung
svg string SVG-Quellcode. Max. 500.000 Zeichen.
preset string safe · balanced (Standard) · aggressive.
// tools/call arguments
{ "svg": "<svg xmlns=\"…\" width=\"24\" height=\"24\"><rect …/></svg>", "preset": "balanced" }
Beispielantwort
{
  "success": true,
  "preset": "balanced",
  "output": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"><path fill=\"#f00\" d=\"M2 2h20v20H2z\"/></svg>",
  "original_size": 136,
  "optimized_size": 106,
  "savings_percent": 22.1
}

Kodiert ein SVG (oder ein abgerufenes Bild) als CSS-fertige data:-URI – URL-kodierte und Base64-Variante plus fertiges background-image-Snippet. Gib entweder rohes svg-Markup oder eine öffentliche url an.

TOOL svg_to_datauri nur lesend idempotent ruft externe URLs ab
ParameterTypBeschreibung
svg string Rohes SVG-Markup. Nicht mit url kombinierbar.
url string Öffentliche Bild-URL, die der Server abruft.
encoding string utf8 · base64. Standard: utf8 für SVG, base64 für Rastergrafiken.
quotes string single · double (Standard) – Art der Anführungszeichen im CSS-Snippet.
// tools/call arguments
{ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\"><circle r=\"4\"/></svg>" }
Beispielantwort
{
  "success": true,
  "mime_type": "image/svg+xml",
  "primary_label": "URL-encoded Data URI",
  "primary_output": "data:image/svg+xml,%3Csvg xmlns=%22http…%3E",
  "secondary_label": "Base64 Data URI",
  "secondary_output": "data:image/svg+xml;base64,PHN2ZyB4bWxu…",
  "css_output": "background-image: url(\"data:image/svg+xml,%3Csvg…%3E\");"
}

Die verfügbaren Presets für die SVG-Optimierung und was jedes davon bewirkt. Keine Parameter.

TOOL list_svg_presets nur lesend idempotent
// tools/call arguments
{ }
Beispielantwort
{
  "presets": [
    { "key": "safe",       "name": "Safe",       "description": "Minimal optimization, preserves most attributes" },
    { "key": "balanced",   "name": "Balanced",   "description": "Good compression with minimal visual changes" },
    { "key": "aggressive", "name": "Aggressive", "description": "Maximum compression, may affect some SVG features" }
  ]
}

Durchstöbert den SCSS-Mixin-Katalog – ID, Titel und eine Kurzbeschreibung pro Mixin, optional gefiltert nach Gruppe oder per unscharfer Suche. Setze fields=full, um den Quellcode in die Liste aufzunehmen.

TOOL list_scss_mixins nur lesend idempotent
ParameterTypBeschreibung
group string Bootstrap · Project · Pattern · Placeholder.
search string Unscharfe Teilstring-Suche in id/title/description.
fields string summary (Standard) · full.
// tools/call arguments
{ "search": "centerer", "fields": "summary" }
Beispielantwort
{
  "success": true,
  "count": 1,
  "groups": ["Bootstrap", "Project", "Pattern", "Placeholder"],
  "items": [
    { "id": "centerer", "title": "centerer()", "group": "Project",
      "short": "Absolute centering helper with axis toggles." }
  ]
}

Ein SCSS-Mixin per ID – vollständiger SCSS-/Sass-/Less-Quellcode, Parameter und eine Anwendungsdemo.

TOOL get_scss_mixin nur lesend idempotent
ParameterTypBeschreibung
id string ID des Mixins (kebab-case), z. B. 'centerer', 'media-breakpoint-up'.
// tools/call arguments
{ "id": "centerer" }
Beispielantwort
{
  "success": true,
  "mixin": {
    "id": "centerer",
    "title": "centerer()",
    "group": "Project",
    "short": "Absolute centering helper with axis toggles.",
    "scss": "@mixin centerer($horizontal: true, $vertical: true) { … }",
    "demo": "…",
    "url": "https://jinero.online/dev/scss-mixins#centerer"
  }
}

Berechnet einen fluiden CSS-Ausdruck clamp() für responsive Größen zwischen zwei Viewport-Breiten. Reine Berechnung – liefert das CSS-Snippet als px- und rem-Variante plus die zugrunde liegende Rechnung.

TOOL generate_clamp nur lesend idempotent
ParameterTypBeschreibung
min_fs number Mindestgröße in px.
max_fs number Maximalgröße in px.
min_vw number Viewport-Breite bei min_fs (Standard 320).
max_vw number Viewport-Breite bei max_fs (Standard 1440).
unit string px · rem (Standard) · both.
root number font-size des Root-Elements in px für die Umrechnung in rem (Standard 16).
// tools/call arguments
{ "min_fs": 16, "max_fs": 24 }
Beispielantwort
{
  "success": true,
  "css": "clamp(1rem, 0.8571rem + 0.7143vw, 1.5rem)",
  "variants": {
    "px":  "clamp(16px, 13.7143px + 0.7143vw, 24px)",
    "rem": "clamp(1rem, 0.8571rem + 0.7143vw, 1.5rem)"
  },
  "math": { "slope": 0.007143, "intercept_px": 13.7143, "vw_coefficient": 0.7143 }
}

Über den MCP-Server von jinero.online

Ein gehosteter Model-Context-Protocol-Server, der die Jinero-Tools für Schriftarten, Farben, Paletten, Code und SVG jedem KI-Agenten zur Verfügung stellt – 22 rein lesende, annotierte Tools unter einer einzigen URL.

Bewusst nur lesend

Alle 22 Tools deklarieren die MCP-Annotationen readOnlyHint + idempotentHint. Übermittelter Code und SVG werden als Text geparst und nie ausgeführt; Bilder werden im Arbeitsspeicher verarbeitet und nie gespeichert.

Ohne Schlüssel, ohne Installation

Ein gehosteter Remote-Server über Streamable HTTP – trag eine URL in deinen MCP-Client ein und leg los. Anonym, Rate-Limit von 60 Anfragen/min pro IP (rechenintensive Tools haben eigene, strengere Limits).

Schriftarterkennung inklusive

recognize_font erkennt Schriftarten auf einem Screenshot mit unserem eigenen CNN-Embedding-Modell – anhand der visuellen Form, ohne OCR, für Lateinisch & Kyrillisch – per URL oder Base64.

Derselbe Vertrag wie die REST-API

Jedes MCP-Tool ruft dieselben Controller auf wie die öffentliche REST-API – Verhalten, Limits und Antwortformate sind daher auf beiden Wegen identisch.

Häufig gestellte Fragen

Nein. Der Server ist anonym und kostenlos, insgesamt auf 60 Anfragen/min pro IP begrenzt; rechenintensive Tools haben strengere Limits (recognize_font 5/min, extract_colors 10/min, Code-/SVG-Umwandlungen 30/min). Er ist in der offiziellen MCP-Registry als online.jinero/jinero veröffentlicht.

Jedes Tool ist nur lesend und idempotent und weist das über MCP-Annotationen aus (readOnlyHint, idempotentHint), die dein Client in tools/list prüfen kann. Code, der zum Minifizieren, Konvertieren oder Erkennen gesendet wird, wird als Text geparst und nie ausgeführt. Nur drei Tools rufen eine von dir angegebene URL ab (recognize_font, extract_colors, svg_to_datauri); diese Abrufe sind gegen SSRF abgesichert und größenbegrenzt, und hochgeladene Bilder werden nie gespeichert.

Mit jedem MCP-Client, der Remote-Server (Streamable HTTP) unterstützt: Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI und anderen. Ältere Clients, die nur stdio beherrschen, lassen sich über npx mcp-remote https://jinero.online/mcp anbinden.

Auf zwei Wegen: als öffentliche image_url oder als image_base64 mit rohem Base64 / Data-URI (max. 8 MB nach dem Dekodieren) – so kann ein Agent einen lokalen Screenshot direkt senden, ohne ihn irgendwo hosten zu müssen. Die Erkennung vergleicht mit unserem eigenen CNN-Modell die visuelle Form der Buchstaben, braucht also kein OCR und funktioniert für lateinische und kyrillische Schrift.

Dieselbe Engine, anderer Transportweg. Die MCP-Tools rufen dieselben Controller auf wie die dokumentierten REST-Endpunkte, daher stimmen Parameter und Antwortformate überein. Nutze REST aus deinem eigenen Code und MCP, um die Tools einem KI-Agenten zu übergeben.

Unter https://jinero.online/.well-known/mcp/server.json und in der offiziellen MCP-Registry (registry.modelcontextprotocol.io) unter dem Namen online.jinero/jinero.