Servidor MCP
Dê ao seu agente de IA as ferramentas de design do Jinero via Model Context Protocol — 22 ferramentas somente leitura para fontes, cores, paletas, código e SVG em um servidor remoto hospedado. Sem npm e sem chave.
Um servidor MCP remoto e hospedado que dá ao seu agente de IA as mesmas ferramentas de design que as pessoas usam no jinero.online: 22 ferramentas — fontes (busca, CSS, arquivos, identificação por imagem), cálculos de cor (contraste, tons, nomes, extração), paletas selecionadas, minificação, conversão e detecção de código, otimização de SVG e helpers de SCSS. Cada ferramenta é uma camada fina sobre a API REST pública — um contrato, um comportamento. Publicado no registro oficial de MCP como online.jinero/jinero; o manifesto fica em /.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 com qualquer cliente MCP compatível com servidores remotos (Streamable HTTP): Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI e outros. Clientes mais antigos, que só usam stdio, podem se conectar por uma ponte com 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 ferramenta declara anotações MCP, para que clientes e scanners de segurança possam verificar o comportamento em vez de adivinhar: todas as 22 ferramentas são somente leitura e idempotentes. O código e o SVG enviados são lidos e transformados como texto — nunca são executados nem armazenados. As imagens enviadas (identificação de fontes, extração de cores) são processadas em memória e excluídas imediatamente. Só três ferramentas acessam uma URL informada pelo usuário (recognize_font, extract_colors, svg_to_datauri) — elas são marcadas como open-world, e os acessos têm proteção contra SSRF (só http(s) público, com limite de tamanho). Anônimo, sem chave de API, com limite geral de 60 req/min por IP; ferramentas que exigem mais processamento têm limites próprios mais rígidos (recognize_font 5/min, extract_colors 10/min, transformações de código/SVG 30/min), informados na descrição de cada ferramenta.
// Annotations served in tools/list for every tool
{
"readOnlyHint": true,
"idempotentHint": true,
"openWorldHint": false // true only on the 3 URL-fetching tools
}
Busca no catálogo de fontes gratuitas por nome, categoria, tags de estilo, suporte a idiomas, indicadores variable/monospace e número de estilos. Retorna uma lista paginada de famílias com URLs de prévia e metadados de cada estilo.
search_fonts
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
name |
string | Busca aproximada pelo nome. |
category |
string | Categorias separadas por vírgula, ex.: 'serif,sans'. |
langs |
string | Códigos de idioma separados por vírgula, ex.: 'latin,cyrillic' — TODOS devem ser suportados. |
style |
string | Tags de estilo separadas por vírgula (handwriting, script, display, slab, rounded, condensed, expanded, stencil, pixel, blackletter, outline, retro) — TODAS devem corresponder. |
variable |
boolean | Somente fontes variáveis. |
monospace |
boolean | Somente fontes monoespaçadas. |
styles_min / styles_max |
integer | Limites do número de estilos. |
order |
string | likes (padrão) · downloads · views · name · created_at. |
sort |
string | asc · desc. |
per_page / page |
integer | Paginação (per_page 1–100, padrão 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 qual fonte foi usada em uma imagem. Usa o nosso próprio modelo de embeddings CNN, treinado no catálogo do jinero — ele compara as fontes pela forma visual, então dispensa OCR e texto legível (caracteres latinos e cirílicos). Envie um recorte justo de uma linha de texto como image_url pública ou como image_base64 (base64 puro / data URI — perfeito para uma captura de tela local que o agente acabou de fazer). A imagem é processada em memória e excluída imediatamente. ~200 ms por chamada.
recognize_font
somente leitura
idempotente
acessa URLs externas
| Parâmetro | Tipo | Descrição |
|---|---|---|
image_url |
string | URL http(s) pública da imagem. Informe esta ou image_base64. |
image_base64 |
string | Imagem codificada em Base64 (base64 puro ou URI data:image/…;base64), até 8 MB depois de decodificada. Informe esta ou image_url. |
top_k |
integer | Número de fontes correspondentes a retornar (3–20, padrão 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."
}
Metadados completos de uma família de fontes pelo slug: designer, licença, categoria, suporte a idiomas, eixos variáveis, todos os estilos, além de URLs prontas de download, CSS e arquivos.
get_font
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
slug |
string | Slug da família, ex.: '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 os arquivos de fonte de uma família — peso, indicador de itálico, nome do estilo, formato e URL direta do woff2/ttf com o tamanho do arquivo. Prático quando o agente está escrevendo regras @font-face próprias ou baixando pesos específicos.
get_font_files
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
slug |
string | Slug da família, ex.: '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 }
]
}
Gera CSS @font-face pronto para colar a partir da especificação de uma família — sintaxe compatível com o Google Fonts, incluindo intervalos de fontes variáveis. Retorna CSS em texto puro, que o agente pode colocar direto em uma folha de estilos.
get_fonts_css
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
family |
string | Especificação da família, ex.: "inter:wght@400,700" ou um intervalo variável "inter:[email protected]". |
display |
string | Valor de font-display: swap (padrão) · 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 … */
Retorna a URL direta de download do ZIP de uma família de fontes (todos os estilos em TTF + WOFF2, além de um fonts.css pronto). A ferramenta não baixa nada sozinha — ela entrega a URL ao usuário ou ao agente.
get_font_download_url
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
slug |
string | Slug da família, ex.: 'inter'. |
// tools/call arguments
{ "slug": "inter" }
{
"slug": "inter",
"download_url": "https://jinero.online/api/v1/fonts/inter/download"
}
Taxa de contraste WCAG 2.1 entre a cor do texto e a do fundo, com indicação de aprovação AA/AAA para texto normal e grande — o mesmo cálculo sRGB que o Lighthouse usa.
check_contrast
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
fg |
string | Cor do texto: hex, rgb() ou hsl(). |
bg |
string | Cor de fundo, nos mesmos 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 }
}
Um conjunto completo de design tokens a partir de uma cor base: tons claros, tons escuros e cinco relações harmônicas (complementar, análoga, triádica, complementar dividida, tetrádica). Cada cor traz strings hex/rgb/hsl, luminância e uma cor de texto recomendada.
get_color_shades
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
hex |
string | Cor base: hex, rgb() ou hsl(). |
step |
string | Passo em porcentagem: 5, 10 (padrão), 20, 25. |
limit |
integer | Limite de tons claros/escuros (por padrão, preenche até ~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": ["…"] }
}
O nome legível mais próximo para uma ou várias cores — a correspondência perceptual mais próxima em um conjunto de ~31.000 cores. Ótimo para nomear paletas extraídas ou amostras geradas.
name_color
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
hex |
string | Um hex ou vários separados por vírgula (até 100), ex.: "#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 }
]
}
Extrai uma paleta de cores dominantes de uma imagem — clusterização k-means nos modos balanced / vibrant / muted. Envie uma image_url pública ou image_base64 (base64 puro / data URI — perfeito para uma captura de tela local). A imagem é processada em memória e nunca é armazenada. Cada cor volta com nome: uma paleta nomeada em uma só chamada.
extract_colors
somente leitura
idempotente
acessa URLs externas
| Parâmetro | Tipo | Descrição |
|---|---|---|
image_url |
string | URL pública da imagem (baixada pelo servidor, até 10 MB, só image/*). Informe esta ou image_base64. |
image_base64 |
string | Imagem codificada em Base64 (base64 puro ou URI data:image/…;base64), até 10 MB depois de decodificada. Informe esta ou image_url. |
count |
integer | Quantas cores retornar: 2–16, padrão 8. |
mode |
string | balanced (padrão) · 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 no catálogo de paletas de cores selecionadas por nome, tom, temperatura, clima, harmonia, número exato de cores e tags. Retorna uma lista paginada — cada paleta com as suas cores hex e a classificação.
search_palettes
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
name |
string | Busca aproximada pelo nome. |
tone |
string | light · dark · mixed. |
temperature |
string | warm · cool · neutral. |
mood |
string | ex.: pastel, muted, earthy, vibrant, monochrome. |
harmony |
string | ex.: analogous, complementary, triadic, monochromatic. |
color_count |
integer | Número exato de cores (2–10). |
tags |
array | Slugs das tags — TODAS devem corresponder. |
order |
string | newest (padrão) · popular · name. |
per_page / page |
integer | Paginação (per_page 1–100, padrão 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
}
Uma paleta pelo id: cores hex, nome, tom, temperatura, clima, harmonia e tags.
get_palette
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
integer | id da 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 ou formata JS, CSS, HTML, SVG, JSON ou XML. O código é apenas lido e reescrito como texto — nunca é executado nem armazenado. Use type=auto para o servidor detectar a linguagem.
minify_code
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
code |
string | Texto de origem a transformar. |
type |
string | js · css · html · svg · json · xml · auto. |
mode |
string | minify (padrão) · beautify. |
keep_license |
boolean | Manter os comentários de licença /*! … */ ao 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 a linguagem ou o formato de um trecho de código — só análise estática, o trecho nunca é executado. Também informa quais conversores aceitam o formato detectado como entrada.
detect_code
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
code |
string | Trecho a analisar. Até 200.000 caracteres. |
// tools/call arguments
{ "code": "const x = () => 42;" }
{
"success": true,
"detected_type": "esm",
"confidence": "medium",
"available_targets": [ { "to": "cjs", "label": "ESM → CommonJS" } ]
}
Converte código entre formatos de texto — JSON↔YAML, JSON→TOML, CSS↔SCSS, ESM→CJS e outros. Transformação puramente textual: o código de origem é lido e serializado de novo, nunca executado nem armazenado. Use list_code_converters para ver a lista completa de pares from/to e as opções de cada conversor.
convert_code
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
code |
string | Código-fonte a converter. |
from |
string | id do formato de origem (veja list_code_converters). |
to |
string | id do formato de destino. |
options |
object | Opções de cada conversor (veja optionsSchema em 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
}
O registro dos conversores disponíveis: ids from/to, nomes legíveis e o esquema de opções de cada conversor. Sem parâmetros.
list_code_converters
somente leitura
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", "…": "…" }
]
}
Otimiza e limpa código SVG com o SVGO — transformação pura do markup, nada é executado nem armazenado. Retorna o SVG minificado e os tamanhos antes/depois.
optimize_svg
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
svg |
string | Código SVG. Até 500.000 caracteres. |
preset |
string | safe · balanced (padrão) · 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 um SVG (ou uma imagem baixada) como URI data: pronto para CSS — variantes com URL encoding e base64, além de um trecho background-image pronto. Informe o código svg puro ou uma url pública.
svg_to_datauri
somente leitura
idempotente
acessa URLs externas
| Parâmetro | Tipo | Descrição |
|---|---|---|
svg |
string | Código SVG puro. Não pode ser usado junto com url. |
url |
string | URL pública da imagem que o servidor vai baixar. |
encoding |
string | utf8 · base64. Padrão: utf8 para SVG, base64 para imagens rasterizadas. |
quotes |
string | single · double (padrão) — tipo de aspas no trecho de 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\");"
}
As predefinições de otimização de SVG disponíveis e o que cada uma faz. Sem parâmetros.
list_svg_presets
somente leitura
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 o catálogo de mixins SCSS — id, título e uma descrição curta de cada um, com filtro opcional por grupo ou busca aproximada. Use fields=full para incluir o código-fonte na listagem.
list_scss_mixins
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
group |
string | Bootstrap · Project · Pattern · Placeholder. |
search |
string | Busca aproximada de substring em id/title/description. |
fields |
string | summary (padrão) · 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." }
]
}
Um mixin SCSS pelo id — código-fonte completo em SCSS/Sass/Less, parâmetros e uma demonstração de uso.
get_scss_mixin
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
string | id do mixin (kebab-case), ex.: '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 uma expressão CSS clamp() fluida para tamanhos responsivos entre duas larguras de viewport. Puro cálculo — retorna o trecho de CSS nas variantes px e rem, além da matemática por trás.
generate_clamp
somente leitura
idempotente
| Parâmetro | Tipo | Descrição |
|---|---|---|
min_fs |
number | Tamanho mínimo em px. |
max_fs |
number | Tamanho máximo em px. |
min_vw |
number | Largura do viewport em min_fs (padrão 320). |
max_vw |
number | Largura do viewport em max_fs (padrão 1440). |
unit |
string | px · rem (padrão) · both. |
root |
number | font-size da raiz em px para a conversão em rem (padrão 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 }
}
Sobre o servidor MCP do jinero.online
Um servidor Model Context Protocol hospedado que coloca as ferramentas de fontes, cores, paletas, código e SVG do Jinero nas mãos de qualquer agente de IA — 22 ferramentas anotadas, somente leitura, em uma única URL.
Somente leitura por design
Todas as 22 ferramentas declaram as anotações MCP readOnlyHint + idempotentHint. O código e o SVG enviados são lidos como texto e nunca executados; as imagens são processadas em memória e nunca armazenadas.
Sem chave e sem instalação
Um servidor remoto hospedado via Streamable HTTP — adicione uma URL ao seu cliente MCP e pronto. Anônimo, com limite de 60 req/min por IP (ferramentas pesadas têm limites próprios mais rígidos).
Identificação de fontes integrada
recognize_font identifica fontes a partir de uma captura de tela com o nosso próprio modelo de embeddings CNN — pela forma visual, sem OCR, caracteres latinos e cirílicos — via URL ou base64.
Um só contrato com a API REST
Cada ferramenta MCP chama os mesmos controllers da API REST pública, então comportamento, limites e formato das respostas são idênticos nas duas interfaces.
Perguntas frequentes
Não. O servidor é anônimo e gratuito, com limite geral de 60 requisições/min por IP; ferramentas que exigem mais processamento têm limites mais rígidos (recognize_font 5/min, extract_colors 10/min, transformações de código/SVG 30/min). Ele está publicado no registro oficial de MCP como online.jinero/jinero.
Cada ferramenta é somente leitura e idempotente e declara isso por anotações MCP (readOnlyHint, idempotentHint) que o seu cliente pode verificar em tools/list. O código enviado para minificar, converter ou detectar é lido como texto e nunca executado. Só três ferramentas acessam uma URL informada por você (recognize_font, extract_colors, svg_to_datauri); esses acessos têm proteção contra SSRF e limite de tamanho, e as imagens enviadas nunca são armazenadas.
Com qualquer cliente MCP compatível com servidores remotos (Streamable HTTP): Claude Code, Claude Desktop, Cursor, Cline, Zed, Gemini CLI e outros. Clientes mais antigos, só com stdio, podem se conectar por uma ponte com npx mcp-remote https://jinero.online/mcp.
De duas formas: uma image_url pública ou image_base64 com base64 puro / data URI (até 8 MB depois de decodificado) — assim o agente pode enviar uma captura de tela local diretamente, sem hospedá-la em lugar nenhum. A identificação compara a forma visual das letras com o nosso próprio modelo CNN, então dispensa OCR e funciona com caracteres latinos e cirílicos.
Mesmo motor, transporte diferente. As ferramentas MCP chamam os mesmos controllers dos endpoints REST documentados, então parâmetros e formato das respostas são iguais. Use REST no seu próprio código e MCP para entregar as ferramentas a um agente de IA.
Em https://jinero.online/.well-known/mcp/server.json e no registro oficial de MCP (registry.modelcontextprotocol.io), com o nome online.jinero/jinero.