MCP-Server
Gib deinem KI-Agenten die Design-Tools von Jinero über das Model Context Protocol – 22 rein lesende Tools für Schriftarten, Farben, Paletten, Code und SVG auf einem gehosteten Remote-Server. Ohne npm, ohne Schlüssel.
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.
search_fonts
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.
recognize_font
nur lesend
idempotent
ruft externe URLs ab
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.
get_font
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
slug |
string | Slug der Familie, z. B. 'inter', 'playfair-display'. |
// tools/call arguments
{ "slug": "inter" }
{
"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.
get_font_files
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
slug |
string | Slug der Familie, z. B. 'inter'. |
// tools/call arguments
{ "slug": "inter" }
{
"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.
get_fonts_css
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
/* 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.
get_font_download_url
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
slug |
string | Slug der Familie, z. B. 'inter'. |
// tools/call arguments
{ "slug": "inter" }
{
"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.
check_contrast
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
fg |
string | Vordergrundfarbe: hex, rgb() oder hsl(). |
bg |
string | Hintergrundfarbe, gleiche Formate. |
// tools/call arguments
{ "fg": "#1d4ed8", "bg": "#ffffff" }
{
"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.
get_color_shades
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.
name_color
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
{
"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.
extract_colors
nur lesend
idempotent
ruft externe URLs ab
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.
search_palettes
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.
get_palette
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
id |
integer | ID der Palette (aus search_palettes). |
// tools/call arguments
{ "id": 6267 }
{
"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.
minify_code
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
{
"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.
detect_code
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
code |
string | Zu analysierendes Snippet. Max. 200.000 Zeichen. |
// tools/call arguments
{ "code": "const x = () => 42;" }
{
"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.
convert_code
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
{
"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.
list_code_converters
nur lesend
idempotent
// tools/call arguments
{ }
{
"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.
optimize_svg
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
{
"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.
svg_to_datauri
nur lesend
idempotent
ruft externe URLs ab
| Parameter | Typ | Beschreibung |
|---|---|---|
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>" }
{
"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.
list_svg_presets
nur lesend
idempotent
// tools/call arguments
{ }
{
"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.
list_scss_mixins
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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" }
{
"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.
get_scss_mixin
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
id |
string | ID des Mixins (kebab-case), z. B. 'centerer', 'media-breakpoint-up'. |
// tools/call arguments
{ "id": "centerer" }
{
"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.
generate_clamp
nur lesend
idempotent
| Parameter | Typ | Beschreibung |
|---|---|---|
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 }
{
"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.