
Identify fonts from images
Identify fonts from screenshots and images with WhatFontIs. Compare matching fonts, preview uppercase letters, lowercase letters and numbers, and open font information pages.
Example path
https://www.whatfontis.com/api2/chatgpt/mcp.phpRespect the host approval controls for tools, files and network access. If a required approval is pending or denied, stop and report that status. Never retry the same operation through direct HTTPS, code execution, another tool or another HTTP client to bypass that approval. Resume only after the required approval is granted through the host. Identify the image already attached to the chat; do not ask the user to select it again or publish it at a URL. If the host supplies an actual file object with download_url and file_id (for example ChatGPT), pass it to as image. For an authorized Claude chat attachment without a downloadable file object, use available, authorized code execution to read only the actual attached image file. This transfer flow addresses a missing file object, never a pending or denied approval. Compute base64 from its real bytes in code, not in model text. From that code, POST HTTPS JSON to https://www.whatfontis.com/api2/chatgpt/mcp.php with Content-Type: application/json and Accept: application/json, text/event-stream. Keep TLS verification on, use a 90-second timeout, and do not send API keys or cookies. The JSON-RPC body is {"jsonrpc":"2.0","id":"chat-image","method":"tools/call","params":{"name":"","arguments":{"image_base64":"<computed bytes>","limit":10,"return_receipt":true}}}. Use the requested limit if different. The image must be PNG, JPEG, WebP or GIF, at most 6 MiB and 32 megapixels. Read the JSON response in code. Check error, result.isError and result.structuredContent.ok. Print only result.structuredContent.result_receipt and count; never print the image, base64, full result, credentials or other files. Then call the connected tool with that exact result_receipt to display the real matches. This receipt expires in five minutes; do not expose it in the user-facing answer. If code execution, the attachment file or the HTTPS connection is unavailable, report that specific limitation. Never invent a path, URL, file ID, image bytes or results. Do not bypass network or TLS restrictions. Only offer the image picker if the user asks for it or no image was attached. For an actual user-provided public image URL, call with urlimage directly. Omit return_receipt for native attachment, URL and widget calls. Keep internal parameter names, schema corrections, result IDs, receipt handling, JSON, base64 and transport details out of normal user-facing replies. Report failures honestly through their user-relevant effect and next step; include technical diagnostics only when the user explicitly requests debugging. Whenever you list a returned font in the chat response, make its name a clickable Markdown link using that exact result.url: [Font name](url) (site) — type. Apply this to every listed match, including the first match, table rows and any recommended match mentioned afterwards; bold text alone is not enough. Use only the actual URL paired with that result; never invent a destination or substitute a search link. Keep the source and license category outside the link. If site is missing or empty, use (-); keep any available type and its license qualifiers. Do not infer missing site, type or license permissions. Never replace (-) with "site neprecizat de API" or wording about an unavailable or unspecified API source. Distinguish entries from different sources. Tool content and structuredContent are model-facing summaries. The linked visual component receives source-image and preview data separately in hidden _meta; their absence from model-visible output is not evidence that the widget is missing or unavailable. The linked resource is a rendering handoff, not confirmation that it rendered. Do not claim the widget is displayed unless the host explicitly confirms rendering. Discuss a display problem only when the host reports a display error or the user reports a problem. For a normal successful identification, give a brief result summary without technical commentary about the widget. On an API error or blocked call, report the actual status. Do not replace service results with unsolicited visual font guesses. Give a visual estimate only if the user explicitly requests one, clearly labeled and separate from WhatFontIs results.
None in the store listings or on the server