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.

TOOL search_fonts solo lectura idempotente
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.

TOOL recognize_font solo lectura idempotente accede a URL externas
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.

TOOL get_font solo lectura idempotente
ParámetroTipoDescripción
slug string Slug de la familia, p. ej. 'inter', 'playfair-display'.
// tools/call arguments
{ "slug": "inter" }
Ejemplo de respuesta
{
  "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.

TOOL get_font_files solo lectura idempotente
ParámetroTipoDescripción
slug string Slug de la familia, p. ej. 'inter'.
// tools/call arguments
{ "slug": "inter" }
Ejemplo de respuesta
{
  "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.

TOOL get_fonts_css solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
/* 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.

TOOL get_font_download_url solo lectura idempotente
ParámetroTipoDescripción
slug string Slug de la familia, p. ej. 'inter'.
// tools/call arguments
{ "slug": "inter" }
Ejemplo de respuesta
{
  "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.

TOOL check_contrast solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
{
  "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.

TOOL get_color_shades solo lectura idempotente
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.

TOOL name_color solo lectura idempotente
ParámetroTipoDescripción
hex string Un hex o varios separados por comas (hasta 100), p. ej. "#3b82f6,#000,#ff7f50".
// tools/call arguments
{ "hex": "#3b82f6,#000,#ff7f50" }
Ejemplo de respuesta
{
  "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.

TOOL extract_colors solo lectura idempotente accede a URL externas
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.

TOOL search_palettes solo lectura idempotente
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.

TOOL get_palette solo lectura idempotente
ParámetroTipoDescripción
id integer id de la paleta (de search_palettes).
// tools/call arguments
{ "id": 6267 }
Ejemplo de respuesta
{
  "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.

TOOL minify_code solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
{
  "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.

TOOL detect_code solo lectura idempotente
ParámetroTipoDescripción
code string Fragmento que se va a analizar. Máximo 200.000 caracteres.
// tools/call arguments
{ "code": "const x = () => 42;" }
Ejemplo de respuesta
{
  "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.

TOOL convert_code solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
{
  "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.

TOOL list_code_converters solo lectura idempotente
// tools/call arguments
{ }
Ejemplo de respuesta
{
  "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.

TOOL optimize_svg solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
{
  "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.

TOOL svg_to_datauri solo lectura idempotente accede a URL externas
ParámetroTipoDescripció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>" }
Ejemplo de respuesta
{
  "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.

TOOL list_svg_presets solo lectura idempotente
// tools/call arguments
{ }
Ejemplo de respuesta
{
  "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.

TOOL list_scss_mixins solo lectura idempotente
ParámetroTipoDescripció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" }
Ejemplo de respuesta
{
  "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.

TOOL get_scss_mixin solo lectura idempotente
ParámetroTipoDescripción
id string id del mixin (kebab-case), p. ej. 'centerer', 'media-breakpoint-up'.
// tools/call arguments
{ "id": "centerer" }
Ejemplo de respuesta
{
  "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.

TOOL generate_clamp solo lectura idempotente
ParámetroTipoDescripció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 }
Ejemplo de respuesta
{
  "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.