# PatternHoop > Free online tool that turns a photo into a cross-stitch pattern: DMC thread colours, symbols, a legend, a skein > estimate and a printable A4 PDF. Russian at https://patternhoop.com/, English at https://patternhoop.com/en. No sign-up; the photo > never leaves the browser. ## About PatternHoop PatternHoop (patternhoop.com) turns a photo or a picture into a cross-stitch pattern for free. No sign-up needed. ## What it does - Sizes the pattern in stitches and centimeters for Aida 11, 14, 16 or 18. - Reduces the picture to a palette of 4 to 40 DMC floss colors and cleans up stray single stitches. - Shows the pattern as stitches, as symbols and next to the original photo. - Counts the stitches of each color, the skeins to buy and the fabric to cut. - Builds a PDF to print on A4 sheets: a cover, a legend and the chart sheets, in color and, if you like, in black and white. All 488 DMC colors with their numbers are in the [palette](/en/palette). ## How your photo is handled The photo never leaves your browser: the pattern and the PDF are computed on your device. The only thing sent to our server is the finished PDF, and only when you ask us to email it. The [privacy policy](/en/privacy) has the details. ## Blog The [blog](/blog/en) covers which photos work for cross-stitch and how to choose colors and fabric. ## Contact Send questions and suggestions to [privacy@patternhoop.com](mailto:privacy@patternhoop.com). ## PatternHoop for developers and AI agents PatternHoop has free, read-only tools for programs and AI agents: look up DMC thread colours, match any colour to DMC threads, work out the size of a pattern and the fabric for it, and search the cross-stitch blog. There is no key and no sign-up. Making a pattern from a photo stays in the [editor](/en): the photo never leaves the person's browser. ## Tools - **get_dmc_color**: a DMC thread by its number ("310", "Blanc", "B5200"): name, hex, RGB and colour family. - **find_nearest_dmc_colors**: the DMC threads closest to any colour (#rrggbb or rgb()), ranked by CIEDE2000, the matching the editor uses. - **list_dmc_colors**: all 488 DMC colours, by colour family or by a search in the number and name. - **pattern_size**: finished size in cm and inches for width × height stitches on Aida 11, 14, 16 or 18, the fabric to cut and stitches per skein. - **search_articles**: articles of the [blog](/blog/en) in English or Russian. ## REST API JSON over HTTPS at `https://patternhoop.com/api/v1`, described by [OpenAPI](/openapi.json) and listed in the [API catalog](/.well-known/api-catalog) (RFC 9727). Examples: - `GET /api/v1/colors/310` - `GET /api/v1/colors/nearest?color=%23c0392b&limit=3` - `GET /api/v1/colors?family=blues` - `GET /api/v1/pattern-size?width=140&height=100&aida=14` - `GET /api/v1/articles?query=aida&locale=en` Errors come as problem details (RFC 9457). CORS is open. Please keep to a few requests a second: the edge blocks bursts for a few seconds. ## MCP server Streamable HTTP at `https://patternhoop.com/api/mcp`, stateless, with the same five tools, all read-only. Its [server card](/.well-known/mcp/server-card.json) describes it. Add it to an MCP client as a remote server with that URL; no authorization is needed. ## A2A agent An [Agent2Agent](https://a2a-protocol.org) agent at `https://patternhoop.com/api/a2a` (JSON-RPC), described by its [agent card](/.well-known/agent-card.json). It answers `message/send` with the same skills. Send a data part `{"skill": "find_nearest_dmc_colors", "input": {"color": "#c0392b"}}`, or plain text such as "DMC 310", "#c0392b" or "140x100 aida 14". ## In the browser On the [editor](/en) page, browsers with WebMCP get tools to change the pattern settings and read the thread list, so an agent working in the page can help with the pattern. ## Discovery [llms.txt](/llms.txt), [llms-full.txt](/llms-full.txt), the [agent skill](/.well-known/agent-skills/index.json), the [ARD catalog](/.well-known/ai-catalog.json), [auth.md](/auth.md) and DNS-AID records under `_agents.patternhoop.com`. Every page also answers `Accept: text/markdown` with Markdown. ## Terms The data is free to use. DMC is a trademark of DMC; the colours are approximations of the real threads. The [terms of use](/en/terms) apply. Questions: privacy@patternhoop.com. ## Tool reference ### get_dmc_color Look up a DMC stranded cotton colour by its number ("310", "3865", "Blanc", "B5200"): name, hex and RGB, colour family. Input (JSON Schema): ```json { "type": "object", "properties": { "code": { "type": "string", "minLength": 1, "maxLength": 10, "description": "DMC number as printed on the skein, e.g. \"310\"" } }, "required": [ "code" ] } ``` ### find_nearest_dmc_colors Find the DMC threads closest to any colour (hex like #ff6600 or rgb(255,102,0)), ranked by CIEDE2000 colour difference, the same matching the pattern maker uses. deltaE below 2 is hard to tell apart; above 10 is clearly a different colour. Input (JSON Schema): ```json { "type": "object", "properties": { "color": { "type": "string", "minLength": 3, "maxLength": 32, "description": "Colour as #rrggbb, #rgb or rgb(r, g, b)" }, "limit": { "default": 5, "description": "How many threads to return (1–20)", "type": "integer", "minimum": 1, "maximum": 20 } }, "required": [ "color" ] } ``` ### list_dmc_colors List DMC stranded cotton colours (488 in total), optionally by colour family or by a search in the number and name. Input (JSON Schema): ```json { "type": "object", "properties": { "family": { "description": "Colour family", "type": "string", "enum": [ "reds", "pinks", "oranges", "yellows", "greens", "blues", "purples", "browns", "neutrals", "whites" ] }, "query": { "description": "Part of a number or a name, e.g. \"blue\" or \"31\"", "type": "string", "maxLength": 40 }, "limit": { "default": 100, "description": "Most threads to return", "type": "integer", "minimum": 1, "maximum": 500 } } } ``` ### pattern_size For a cross-stitch pattern of width × height stitches on Aida 11, 14, 16 or 18: the finished size in cm and inches, the piece of fabric to cut (5 cm spare on each side) and how many full stitches one 8 m skein covers with 2 strands. Input (JSON Schema): ```json { "type": "object", "properties": { "width": { "type": "integer", "minimum": 1, "maximum": 500, "description": "Width in stitches" }, "height": { "type": "integer", "minimum": 1, "maximum": 500, "description": "Height in stitches" }, "aida": { "default": 14, "description": "Aida count, stitches per inch: 11, 14, 16 or 18", "type": "number" } }, "required": [ "width", "height" ] } ``` ### search_articles Search PatternHoop blog articles about cross-stitch (choosing photos, Aida fabric, threads) in English or Russian. Returns titles, summaries and links; every article page also answers Accept: text/markdown. Input (JSON Schema): ```json { "type": "object", "properties": { "query": { "description": "Words to look for; empty lists every article", "type": "string", "maxLength": 100 }, "locale": { "description": "Language: en or ru", "type": "string", "enum": [ "ru", "en" ] }, "limit": { "default": 10, "description": "Most articles to return", "type": "integer", "minimum": 1, "maximum": 50 } } } ``` ## DMC colour families - reds: https://patternhoop.com/en/palette/reds - pinks: https://patternhoop.com/en/palette/pinks - oranges: https://patternhoop.com/en/palette/oranges - yellows: https://patternhoop.com/en/palette/yellows - greens: https://patternhoop.com/en/palette/greens - blues: https://patternhoop.com/en/palette/blues - purples: https://patternhoop.com/en/palette/purples - browns: https://patternhoop.com/en/palette/browns - neutrals: https://patternhoop.com/en/palette/neutrals - whites: https://patternhoop.com/en/palette/whites ## Blog Articles in English (https://patternhoop.com/blog/en) and Russian (https://patternhoop.com/blog); the list as JSON: https://patternhoop.com/blog/articles.json. Every article answers `Accept: text/markdown` with Markdown. ## PatternHoop auth.md PatternHoop (https://patternhoop.com) needs no authentication. Agents, scripts and people use everything anonymously: there are no accounts, no API keys, no tokens and no registration step. ## Agent audience Any AI agent or program that wants DMC thread colours, cross-stitch pattern sizes or the cross-stitch blog. ## Access - Identity: anonymous. Send no Authorization header. - Credentials: none. There is nothing to register, claim or revoke. - REST API: https://patternhoop.com/api/v1 (OpenAPI: https://patternhoop.com/openapi.json) - MCP server: https://patternhoop.com/api/mcp (server card: https://patternhoop.com/.well-known/mcp/server-card.json) - A2A agent: https://patternhoop.com/api/a2a (agent card: https://patternhoop.com/.well-known/agent-card.json) ## Limits Everything is read-only. Keep to a few requests a second: the edge blocks bursts from one address for a few seconds. The PDF email form on the site is for people and is protected by Cloudflare Turnstile; agents should not use it. ## Docs https://patternhoop.com/en/developers