Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,544Letters: 14Defects: 1,324counted 2 min ago
teppi

Server definition

Hash
sha256:357b1255472d7aa0fdce7583d7aec88ad4902e652bb7567fea1a101ec998c485
What it is
What a remote MCP server returned when asked what it offers: 22 tools

The blob, as servednamed by its sha256

{ "instructions": "Jinero exposes the design tools of jinero.online to LLM agents: search and embed free fonts (Google-Fonts-compatible CSS), identify a font from an image (recognize_font — powered by our own CNN embedding model trained on the catalog: matches by visual shape, no OCR/text needed, Latin & Cyrillic; accepts a public image URL or a base64-encoded local image), browse color palettes, check WCAG contrast and generate tints/shades, minify/beautify/convert code, optimize SVG and produce data URIs, and fetch SCSS mixins and fluid clamp() values. All data comes from the same public API documented at https://jinero.online/dev. All tools are read-only and idempotent: submitted code/SVG is parsed and transformed as text, never executed; uploaded images are processed in memory and never stored. No API key needed.", "tools": [ { "description": "Check the WCAG contrast ratio between a foreground and background color, with AA/AAA pass/fail for normal and large text.", "inputSchema": { "properties": { "bg": { "description": "Background color (hex, rgb(), or hsl()).", "type": "string" }, "fg": { "description": "Foreground color (hex, rgb(), or hsl()).", "type": "string" } }, "required": [ "fg", "bg" ], "type": "object" }, "name": "check_contrast", "outputSchema": null }, { "description": "Convert code between text formats (e.g. JSON↔YAML, CSS↔SCSS). Pure text transformation: the source is parsed and re-serialized, never executed and never stored. Use list_code_converters for valid from/to ids and per-converter options. Rate limit: 30 calls/min per IP.", "inputSchema": { "properties": { "code": { "description": "Source code to convert.", "type": "string" }, "from": { "description": "Source format id (see list_code_converters).", "type": "string" }, "options": { "description": "Per-converter options (see optionsSchema in list_code_converters).", "type": "object" }, "to": { "description": "Target format id.", "type": "string" } }, "required": [ "code", "from", "to" ], "type": "object" }, "name": "convert_code", "outputSchema": null }, { "description": "Detect the language/format of a code snippet. Static analysis only — the snippet is never executed and never stored.", "inputSchema": { "properties": { "code": { "description": "Snippet to inspect. Max 200,000 chars.", "type": "string" } }, "required": [ "code" ], "type": "object" }, "name": "detect_code", "outputSchema": null }, { "description": "Extract a dominant-color palette from an image. Send either a public image_url or image_base64 (base64/data-URI, e.g. a local screenshot). The image is processed in memory and never stored. Each color comes back with its hex, rgb, hsl, share of the image, and the closest human color name — a named palette in one call. Rate limit: 10 calls/min per IP.", "inputSchema": { "properties": { "count": { "description": "How many colors to return (2–16, default 8).", "type": "integer" }, "image_base64": { "description": "Base64-encoded image (raw base64 or a data:image/...;base64 URI), max 10 MB decoded — use this to send a local file/screenshot without hosting it. Provide either this or image_url.", "type": "string" }, "image_url": { "description": "Public URL of the image to pull the palette from. Provide either this or image_base64.", "type": "string" }, "mode": { "description": "Palette mode: \"balanced\" (default), \"vibrant\", or \"muted\".", "type": "string" } }, "type": "object" }, "name": "extract_colors", "outputSchema": null }, { "description": "Calculate a fluid CSS clamp() expression for responsive sizing between two viewport widths. Pure calculation — returns a CSS snippet, writes and stores nothing.", "inputSchema": { "properties": { "max_fs": { "description": "Maximum size in px.", "type": "number" }, "max_vw": { "description": "Viewport width at max_fs (default 1440).", "type": "number" }, "min_fs": { "description": "Minimum size in px.", "type": "number" }, "min_vw": { "description": "Viewport width at min_fs (default 320).", "type": "number" }, "root": { "description": "Root font-size in px for rem conversion (default 16).", "type": "number" }, "unit": { "description": "Output unit (default rem).", "enum": [ "px", "rem", "both" ], "type": "string" } }, "required": [ "min_fs", "max_fs" ], "type": "object" }, "name": "generate_clamp", "outputSchema": null }, { "description": "Generate tints and shades for a base color (lighter/darker steps) with hex values.", "inputSchema": { "properties": { "hex": { "description": "Base color in hex, rgb(), or hsl().", "type": "string" }, "limit": { "description": "Cap on tints/shades (default fills to ~100%).", "maximum": 20, "minimum": 1, "type": "integer" }, "step": { "description": "Step percentage (default 10).", "enum": [ "5", "10", "20", "25" ], "type": "string" } }, "required": [ "hex" ], "type": "object" }, "name": "get_color_shades", "outputSchema": null }, { "description": "Get full metadata for one font family by slug: styles, weights, axes, license, subsets and download/CSS URLs.", "inputSchema": { "properties": { "slug": { "description": "Family slug, e.g. 'inter', 'playfair-display'.", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_font", "outputSchema": null }, { "description": "Return the direct ZIP download URL for a font family (all styles + a ready fonts.css). Does NOT download — hand the URL to the user or fetch it separately.", "inputSchema": { "properties": { "slug": { "description": "Family slug, e.g. 'inter'.", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_font_download_url", "outputSchema": null }, { "description": "List every font file (weight/italic/format + direct woff2/ttf URL) for a family — handy for building custom @font-face rules.", "inputSchema": { "properties": { "slug": { "description": "Family slug, e.g. 'inter'.", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_font_files", "outputSchema": null }, { "description": "Generate ready-to-use @font-face CSS for a family spec (Google-Fonts-compatible), e.g. \"inter:wght@400,700\" or a variable range \"inter:[email protected]\". Returns CSS text.", "inputSchema": { "properties": { "display": { "description": "font-display value (default swap).", "enum": [ "swap", "auto", "block", "fallback", "optional" ], "type": "string" }, "family": { "description": "Family spec, e.g. \"inter:wght@400,700\" or \"inter:[email protected]\".", "type": "string" } }, "required": [ "family" ], "type": "object" }, "name": "get_fonts_css", "outputSchema": null }, { "description": "Get one color palette by id: its colors (hex), name/derived title, mood, harmony, temperature and tags.", "inputSchema": { "properties": { "id": { "description": "Palette id.", "type": "integer" } }, "required": [ "id" ], "type": "object" }, "name": "get_palette", "outputSchema": null }, { "description": "Get one SCSS mixin by id: full source, parameters and usage example.", "inputSchema": { "properties": { "id": { "description": "Mixin id (kebab-case), e.g. 'centerer', 'media-breakpoint-up'.", "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "get_scss_mixin", "outputSchema": null }, { "description": "List available code converters with their from/to ids and per-converter option schemas.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_code_converters", "outputSchema": null }, { "description": "List the SCSS mixin catalog (id, title, short description), optionally filtered by group or search.", "inputSchema": { "properties": { "fields": { "description": "Detail level (default summary).", "enum": [ "summary", "full" ], "type": "string" }, "group": { "description": "e.g. Bootstrap, Project, Pattern, Placeholder.", "type": "string" }, "search": { "description": "Fuzzy substring across id/title/short/desc.", "type": "string" } }, "type": "object" }, "name": "list_scss_mixins", "outputSchema": null }, { "description": "List the available SVG optimization presets and what each one does.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_svg_presets", "outputSchema": null }, { "description": "Minify or beautify JS, CSS, HTML, SVG, JSON or XML text. Set type=auto to sniff the language. The code is only parsed and re-printed — never executed and never stored. Rate limit: 30 calls/min per IP.", "inputSchema": { "properties": { "code": { "description": "Source code to transform.", "type": "string" }, "keep_license": { "description": "Preserve /*! ... */ license comments when minifying.", "type": "boolean" }, "mode": { "description": "Default minify.", "enum": [ "minify", "beautify" ], "type": "string" }, "type": { "description": "Source language, or 'auto' to sniff.", "enum": [ "js", "css", "html", "svg", "json", "xml", "auto" ], "type": "string" } }, "required": [ "code", "type" ], "type": "object" }, "name": "minify_code", "outputSchema": null }, { "description": "Get the closest human-readable name for one or more colors. Pass a single hex or several comma-separated (e.g. \"#3b82f6,#000,#ff7f50\"); returns each input with its nearest color name, the reference hex, an exact-match flag and the perceptual distance.", "inputSchema": { "properties": { "hex": { "description": "A hex color, or several comma-separated (e.g. \"#3b82f6,#000,#ff7f50\"). Up to 100 at once.", "type": "string" } }, "required": [ "hex" ], "type": "object" }, "name": "name_color", "outputSchema": null }, { "description": "Optimize/clean SVG markup (SVGO). Pure markup transformation — nothing is executed or stored. Returns minified SVG plus before/after sizes. Rate limit: 30 calls/min per IP.", "inputSchema": { "properties": { "preset": { "description": "Optimization preset (default balanced).", "enum": [ "safe", "balanced", "aggressive" ], "type": "string" }, "svg": { "description": "SVG source. Max 500,000 chars.", "type": "string" } }, "required": [ "svg" ], "type": "object" }, "name": "optimize_svg", "outputSchema": null }, { "description": "Identify which font is used in an image. Powered by our OWN CNN embedding model, trained on the jinero font catalog — it matches fonts by visual shape/style, so it needs NO OCR and NO text (works for Latin and Cyrillic). Send a tight crop of one line of text as either image_url (public URL) or image_base64 (base64/data-URI, e.g. a local screenshot). The image is processed in memory and deleted immediately — never stored. Returns the most visually similar font families with scores. Typically 0.3-1.7 s (an OCR-assisted rerank of top candidates engages when retrieval is uncertain). Rate limit: 5 calls/min per IP (model inference is compute-heavy).", "inputSchema": { "properties": { "image_base64": { "description": "Base64-encoded image (raw base64 or a data:image/...;base64 URI), max 8 MB decoded — use this to send a local file/screenshot without hosting it. Provide either this or image_url.", "type": "string" }, "image_url": { "description": "Public URL of an image — a tight crop of one line of text. Provide either this or image_base64. Recognition is by visual shape (no OCR/text needed); Latin & Cyrillic supported.", "type": "string" }, "top_k": { "description": "Number of font matches to return (3–20, default 8).", "maximum": 20, "minimum": 3, "type": "integer" } }, "type": "object" }, "name": "recognize_font", "outputSchema": null }, { "description": "Search the free font catalog by name, category, style tags, language coverage, variable/monospace flags and style count. Returns a paginated list of families.", "inputSchema": { "properties": { "category": { "description": "Comma-separated categories, e.g. 'serif,sans'.", "type": "string" }, "langs": { "description": "Comma-separated language codes, e.g. 'latin,cyrillic' — ALL must be supported.", "type": "string" }, "monospace": { "description": "Only monospace fonts.", "type": "boolean" }, "name": { "description": "Fuzzy name match.", "type": "string" }, "order": { "description": "Sort field, default 'likes'.", "enum": [ "likes", "downloads", "views", "name", "created_at" ], "type": "string" }, "page": { "description": "Page number.", "minimum": 1, "type": "integer" }, "per_page": { "description": "Results per page (default 24).", "maximum": 100, "minimum": 1, "type": "integer" }, "sort": { "description": "Sort direction.", "enum": [ "asc", "desc" ], "type": "string" }, "style": { "description": "Comma-separated style tags, e.g. 'handwriting,condensed' — ALL must match. One of: handwriting, script, display, slab, rounded, condensed, expanded, stencil, pixel, blackletter, outline, retro.", "type": "string" }, "styles_max": { "description": "Maximum number of styles.", "type": "integer" }, "styles_min": { "description": "Minimum number of styles.", "type": "integer" }, "variable": { "description": "Only variable fonts.", "type": "boolean" } }, "type": "object" }, "name": "search_fonts", "outputSchema": null }, { "description": "Search the color-palette catalog by name, tone, temperature, mood, harmony, exact color count and tags. Returns a paginated list.", "inputSchema": { "properties": { "color_count": { "description": "Exact number of colors.", "maximum": 10, "minimum": 2, "type": "integer" }, "harmony": { "description": "e.g. analogous, complementary, triadic, monochromatic, split-complementary, tetradic.", "type": "string" }, "mood": { "description": "e.g. pastel, muted, earthy, vibrant, monochrome.", "type": "string" }, "name": { "description": "Fuzzy name match.", "type": "string" }, "order": { "description": "Sort order (default newest).", "enum": [ "newest", "popular", "name" ], "type": "string" }, "page": { "description": "Page number.", "minimum": 1, "type": "integer" }, "per_page": { "description": "Results per page (default 24).", "maximum": 100, "minimum": 1, "type": "integer" }, "tags": { "description": "Tag slugs — ALL must match (AND).", "type": "array" }, "temperature": { "description": "Color temperature.", "enum": [ "warm", "cool", "neutral" ], "type": "string" }, "tone": { "description": "Overall tone.", "enum": [ "light", "dark", "mixed" ], "type": "string" } }, "type": "object" }, "name": "search_palettes", "outputSchema": null }, { "description": "Encode an SVG (or fetched image) as a CSS-ready data: URI. Provide either raw svg or a url. Rate limit: 30 calls/min per IP.", "inputSchema": { "properties": { "encoding": { "description": "Defaults: utf8 for SVG, base64 for raster.", "enum": [ "utf8", "base64" ], "type": "string" }, "quotes": { "description": "Quote style for the data URI (default double).", "enum": [ "single", "double" ], "type": "string" }, "svg": { "description": "Raw SVG markup. Mutually exclusive with url.", "type": "string" }, "url": { "description": "Public image URL the server will fetch.", "type": "string" } }, "type": "object" }, "name": "svg_to_datauri", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:357b1255472d7aa0fdce7583d7aec88ad4902e652bb7567fea1a101ec998c485 | sha256sum