Servidor MCP
Dale a tu agente de IA las herramientas de diseño de Jinero mediante el Model Context Protocol: 22 herramientas de solo lectura para fuentes, colores, paletas, código y SVG en un servidor remoto alojado. Sin npm y sin clave.
Un servidor MCP remoto y alojado que le da a tu agente de IA las mismas herramientas de diseño que las personas usan en jinero.online: 22 herramientas que cubren fuentes (búsqueda, CSS, archivos, identificación a partir de una imagen), cálculos de color (contraste, sombras, nombres, extracción), paletas seleccionadas, minificación, conversión y detección de código, optimización de SVG y utilidades SCSS. Cada herramienta es una capa fina sobre la API REST pública: un mismo contrato, un mismo comportamiento. Está publicado en el registro oficial de MCP como online.jinero/jinero; el manifiesto está en /.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"}'
Funciona con cualquier cliente MCP compatible con servidores remotos (Streamable HTTP): Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI y otros. Los clientes más antiguos que solo admiten stdio pueden conectarse mediante un puente: npx mcp-remote https://jinero.online/mcp.
# 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"
}
}
}
Cada herramienta declara anotaciones MCP para que los clientes y los escáneres de seguridad puedan verificar su comportamiento en lugar de suponerlo: las 22 herramientas son de solo lectura e idempotentes. El código y los SVG enviados se analizan y transforman como texto: nunca se ejecutan ni se guardan. Las imágenes subidas (identificación de fuentes, extracción de colores) se procesan en memoria y se eliminan de inmediato. Solo tres herramientas acceden a una URL proporcionada por el usuario (recognize_font, extract_colors, svg_to_datauri): están marcadas como open-world y las descargas están protegidas contra SSRF (solo http(s) público, con límite de tamaño). Anónimo, sin clave de API, con un límite general de 60 solicitudes/min por IP; las herramientas que requieren más cómputo tienen sus propios límites, más estrictos (recognize_font 5/min, extract_colors 10/min, transformaciones de código/SVG 30/min), indicados en la descripción de cada herramienta.
// Annotations served in tools/list for every tool
{
"readOnlyHint": true,
"idempotentHint": true,
"openWorldHint": false // true only on the 3 URL-fetching tools
}
Busca en el catálogo de fuentes gratuitas por nombre, categoría, etiquetas de estilo, idiomas admitidos, indicadores variable/monospace y número de estilos. Devuelve una lista paginada de familias con URL de vista previa y metadatos de cada estilo.
search_fonts
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
name |
string | Búsqueda aproximada por nombre. |
category |
string | Categorías separadas por comas, p. ej. 'serif,sans'. |
langs |
string | Códigos de idioma separados por comas, p. ej. 'latin,cyrillic': la fuente debe admitirlos TODOS. |
style |
string | Etiquetas de estilo separadas por comas (handwriting, script, display, slab, rounded, condensed, expanded, stencil, pixel, blackletter, outline, retro): deben coincidir TODAS. |
variable |
boolean | Solo fuentes variables. |
monospace |
boolean | Solo fuentes monoespaciadas. |
styles_min / styles_max |
integer | Límites mínimo y máximo del número de estilos. |
order |
string | likes (predeterminado) · downloads · views · name · created_at. |
sort |
string | asc · desc. |
per_page / page |
integer | Paginación (per_page 1–100, predeterminado: 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
}
Identifica qué fuente se usa en una imagen. Funciona con nuestro propio modelo de embeddings CNN entrenado con el catálogo de jinero: compara las fuentes por su forma visual, así que no necesita OCR ni texto legible (alfabetos latino y cirílico). Envía un recorte ajustado de una línea de texto como image_url pública o como image_base64 (base64 sin procesar / data URI, perfecto para una captura de pantalla local que tu agente acaba de hacer). La imagen se procesa en memoria y se elimina de inmediato. ~200 ms por llamada.
recognize_font
solo lectura
idempotente
accede a URL externas
| Parámetro | Tipo | Descripción |
|---|---|---|
image_url |
string | URL pública http(s) de la imagen. Indica este parámetro o image_base64. |
image_base64 |
string | Imagen codificada en Base64 (base64 sin procesar o URI data:image/…;base64), máximo 8 MB una vez decodificada. Indica este parámetro o image_url. |
top_k |
integer | Número de coincidencias de fuentes que se devuelven (3–20, predeterminado: 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."
}
Metadatos completos de una familia de fuentes según su slug: diseñador, licencia, categoría, idiomas admitidos, ejes variables, todos los estilos y URL listas para la descarga, el CSS y los archivos.
get_font
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
slug |
string | Slug de la familia, p. ej. '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" }, "…" ]
}
Lista todos los archivos de fuente de una familia: grosor, indicador de cursiva, nombre del estilo, formato y URL directa woff2/ttf con el tamaño del archivo. Útil cuando el agente escribe sus propias reglas @font-face o descarga grosores concretos.
get_font_files
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
slug |
string | Slug de la familia, p. ej. '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 }
]
}
Genera CSS @font-face listo para pegar a partir de una especificación de familia: sintaxis compatible con Google Fonts, incluidos los rangos variables. Devuelve texto CSS plano que el agente puede añadir directamente a una hoja de estilos.
get_fonts_css
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
family |
string | Especificación de la familia, p. ej. "inter:wght@400,700" o un rango variable "inter:[email protected]". |
display |
string | Valor de font-display: swap (predeterminado) · 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 … */
Devuelve la URL directa de descarga del ZIP de una familia de fuentes (todos los estilos en TTF + WOFF2 y un fonts.css listo). La herramienta no descarga nada por sí misma: entrega la URL al usuario o al agente.
get_font_download_url
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
slug |
string | Slug de la familia, p. ej. 'inter'. |
// tools/call arguments
{ "slug": "inter" }
{
"slug": "inter",
"download_url": "https://jinero.online/api/v1/fonts/inter/download"
}
Relación de contraste WCAG 2.1 entre un color de primer plano y uno de fondo, con indicadores de cumplimiento AA/AAA para texto normal y grande: los mismos cálculos sRGB que usa Lighthouse.
check_contrast
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
fg |
string | Color de primer plano: hex, rgb() o hsl(). |
bg |
string | Color de fondo, mismos formatos. |
// 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 }
}
Un conjunto completo de tokens de diseño a partir de un color base: tintes, sombras y cinco relaciones armónicas (complementaria, análoga, triádica, complementaria dividida, tetrádica). Cada color incluye cadenas hex/rgb/hsl, luminancia y un color de texto recomendado.
get_color_shades
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
hex |
string | Color base: hex, rgb() o hsl(). |
step |
string | Porcentaje del paso: 5, 10 (predeterminado), 20, 25. |
limit |
integer | Máximo de tintes/sombras (de forma predeterminada se completa hasta ~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": ["…"] }
}
El nombre legible más cercano para uno o varios colores: la coincidencia perceptual más próxima en un conjunto de ~31.000 colores. Ideal para etiquetar paletas extraídas o muestras generadas.
name_color
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
hex |
string | Un hex o varios separados por comas (hasta 100), p. ej. "#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 }
]
}
Extrae una paleta de colores dominantes de una imagen: agrupamiento k-means con los modos balanced / vibrant / muted. Envía una image_url pública o image_base64 (base64 sin procesar / data URI, perfecto para una captura de pantalla local). La imagen se procesa en memoria y nunca se guarda. Cada color se devuelve con nombre: una paleta etiquetada en una sola llamada.
extract_colors
solo lectura
idempotente
accede a URL externas
| Parámetro | Tipo | Descripción |
|---|---|---|
image_url |
string | URL pública de la imagen (la descarga el servidor; máximo 10 MB, solo image/*). Indica este parámetro o image_base64. |
image_base64 |
string | Imagen codificada en Base64 (base64 sin procesar o URI data:image/…;base64), máximo 10 MB una vez decodificada. Indica este parámetro o image_url. |
count |
integer | Cuántos colores se devuelven: 2–16, predeterminado: 8. |
mode |
string | balanced (predeterminado) · 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, "…": "…" }
]
}
Busca en el catálogo de paletas de colores seleccionadas por nombre, tono, temperatura, estado de ánimo, armonía, número exacto de colores y etiquetas. Devuelve una lista paginada: cada paleta con sus colores hex y su clasificación.
search_palettes
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
name |
string | Búsqueda aproximada por nombre. |
tone |
string | light · dark · mixed. |
temperature |
string | warm · cool · neutral. |
mood |
string | p. ej. pastel, muted, earthy, vibrant, monochrome. |
harmony |
string | p. ej. analogous, complementary, triadic, monochromatic. |
color_count |
integer | Número exacto de colores (2–10). |
tags |
array | Slugs de etiquetas: deben coincidir TODAS. |
order |
string | newest (predeterminado) · popular · name. |
per_page / page |
integer | Paginación (per_page 1–100, predeterminado: 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
}
Una paleta por su id: sus colores hex, nombre, tono, temperatura, estado de ánimo, armonía y etiquetas.
get_palette
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
id |
integer | id de la paleta (de 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": []
}
}
Minifica o formatea JS, CSS, HTML, SVG, JSON o XML. El código solo se analiza y se vuelve a imprimir como texto: nunca se ejecuta ni se guarda. Usa type=auto para que el servidor detecte el lenguaje.
minify_code
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Texto de entrada que se va a transformar. |
type |
string | js · css · html · svg · json · xml · auto. |
mode |
string | minify (predeterminado) · beautify. |
keep_license |
boolean | Conserva los comentarios de licencia /*! … */ al minificar. |
// 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
}
Detecta el lenguaje o formato de un fragmento de código: solo análisis estático, el fragmento nunca se ejecuta. También indica qué convertidores aceptan el formato detectado como entrada.
detect_code
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Fragmento que se va a analizar. Máximo 200.000 caracteres. |
// tools/call arguments
{ "code": "const x = () => 42;" }
{
"success": true,
"detected_type": "esm",
"confidence": "medium",
"available_targets": [ { "to": "cjs", "label": "ESM → CommonJS" } ]
}
Convierte código entre formatos de texto: JSON↔YAML, JSON→TOML, CSS↔SCSS, ESM→CJS y más. Transformación de texto pura: el código fuente se analiza y se vuelve a serializar; nunca se ejecuta ni se guarda. Usa list_code_converters para ver la lista completa de pares from/to y las opciones de cada convertidor.
convert_code
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Código fuente que se va a convertir. |
from |
string | id del formato de origen (consulta list_code_converters). |
to |
string | id del formato de destino. |
options |
object | Opciones específicas de cada convertidor (consulta optionsSchema en 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
}
El registro de convertidores disponibles: ids from/to, nombres legibles y el esquema de opciones de cada convertidor. Sin parámetros.
list_code_converters
solo lectura
idempotente
// 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", "…": "…" }
]
}
Optimiza y limpia el marcado SVG con SVGO: pura transformación del marcado, nada se ejecuta ni se guarda. Devuelve el SVG minificado y los tamaños antes/después.
optimize_svg
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
svg |
string | Código SVG de origen. Máximo 500.000 caracteres. |
preset |
string | safe · balanced (predeterminado) · 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
}
Codifica un SVG (o una imagen descargada) como data: URI listo para CSS: variantes con codificación URL y base64, además de un fragmento background-image listo para usar. Indica el marcado svg sin procesar o una url pública.
svg_to_datauri
solo lectura
idempotente
accede a URL externas
| Parámetro | Tipo | Descripción |
|---|---|---|
svg |
string | Marcado SVG sin procesar. Incompatible con url. |
url |
string | URL pública de la imagen que descargará el servidor. |
encoding |
string | utf8 · base64. Predeterminado: utf8 para SVG, base64 para imágenes rasterizadas. |
quotes |
string | single · double (predeterminado): tipo de comillas en el fragmento CSS. |
// 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\");"
}
Los preajustes de optimización SVG disponibles y qué hace cada uno. Sin parámetros.
list_svg_presets
solo lectura
idempotente
// 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" }
]
}
Explora el catálogo de mixins SCSS: id, título y una descripción breve de cada uno, con filtro opcional por grupo o búsqueda aproximada. Usa fields=full para incluir el código fuente en la lista.
list_scss_mixins
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
group |
string | Bootstrap · Project · Pattern · Placeholder. |
search |
string | Búsqueda aproximada de subcadenas en id/title/description. |
fields |
string | summary (predeterminado) · 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." }
]
}
Un mixin SCSS por su id: código fuente completo en SCSS/Sass/Less, parámetros y una demo de uso.
get_scss_mixin
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
id |
string | id del mixin (kebab-case), p. ej. '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"
}
}
Calcula una expresión CSS clamp() fluida para tamaños adaptables entre dos anchos de viewport. Cálculo puro: devuelve el fragmento CSS en variantes px y rem, junto con los cálculos subyacentes.
generate_clamp
solo lectura
idempotente
| Parámetro | Tipo | Descripción |
|---|---|---|
min_fs |
number | Tamaño mínimo en px. |
max_fs |
number | Tamaño máximo en px. |
min_vw |
number | Ancho del viewport para min_fs (predeterminado: 320). |
max_vw |
number | Ancho del viewport para max_fs (predeterminado: 1440). |
unit |
string | px · rem (predeterminado) · both. |
root |
number | font-size raíz en px para la conversión a rem (predeterminado: 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 }
}
Acerca del servidor MCP de jinero.online
Un servidor Model Context Protocol alojado que pone las herramientas de Jinero para fuentes, colores, paletas, código y SVG al alcance de cualquier agente de IA: 22 herramientas anotadas de solo lectura en una sola URL.
Solo lectura por diseño
Las 22 herramientas declaran las anotaciones MCP readOnlyHint + idempotentHint. El código y los SVG enviados se analizan como texto y nunca se ejecutan; las imágenes se procesan en memoria y nunca se guardan.
Sin clave ni instalación
Un servidor remoto alojado con Streamable HTTP: añade una URL a tu cliente MCP y listo. Anónimo, con un límite de 60 solicitudes/min por IP (las herramientas más pesadas tienen límites propios más estrictos).
Identificación de fuentes integrada
recognize_font identifica fuentes a partir de una captura de pantalla con nuestro propio modelo de embeddings CNN (por forma visual, sin OCR, alfabetos latino y cirílico) mediante URL o base64.
Un mismo contrato con la API REST
Cada herramienta MCP llama a los mismos controladores que la API REST pública, así que el comportamiento, los límites y el formato de las respuestas son idénticos en ambas interfaces.
Preguntas frecuentes
No. El servidor es anónimo y gratuito, con un límite general de 60 solicitudes/min por IP; las herramientas que requieren más cómputo tienen límites más estrictos (recognize_font 5/min, extract_colors 10/min, transformaciones de código/SVG 30/min). Está publicado en el registro oficial de MCP como online.jinero/jinero.
Todas las herramientas son de solo lectura e idempotentes, y lo declaran mediante anotaciones MCP (readOnlyHint, idempotentHint) que tu cliente puede verificar en tools/list. El código enviado para minificar, convertir o detectar se analiza como texto y nunca se ejecuta. Solo tres herramientas acceden a una URL que tú indicas (recognize_font, extract_colors, svg_to_datauri); esas descargas están protegidas contra SSRF y tienen un límite de tamaño, y las imágenes subidas nunca se guardan.
Con cualquier cliente MCP compatible con servidores remotos (Streamable HTTP): Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI y otros. Los clientes más antiguos que solo admiten stdio pueden conectarse mediante un puente: npx mcp-remote https://jinero.online/mcp.
De dos maneras: una image_url pública o image_base64 con base64 sin procesar / un data URI (máximo 8 MB una vez decodificado), así que un agente puede enviar directamente una captura de pantalla local sin alojarla en ningún sitio. La identificación compara la forma visual de las letras con nuestro propio modelo CNN, por lo que no necesita OCR y funciona con los alfabetos latino y cirílico.
El mismo motor, otro transporte. Las herramientas MCP llaman a los mismos controladores que los endpoints REST documentados, así que los parámetros y el formato de las respuestas coinciden. Usa REST desde tu propio código; usa MCP para darle las herramientas a un agente de IA.
En https://jinero.online/.well-known/mcp/server.json y en el registro oficial de MCP (registry.modelcontextprotocol.io) con el nombre online.jinero/jinero.