# Ręczniki Haftowane (remote · reczniki-haftowane.pl)

Publiczny, tylko do odczytu MCP z katalogiem produktów sklepu Ręczniki Haftowane.

- Trust score: 77/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `reczniki-haftowane.pl`: 77/100 (this document), [markdown](https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane.md), [page](https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane)

## Channel facts

- Endpoint: `https://reczniki-haftowane.pl/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2201 tokens (~183/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 53/100
  - Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 81/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 34% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Ręczniki Haftowane MCP server?

Ręczniki Haftowane is a hosted endpoint at https://reczniki-haftowane.pl/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http corozya-reczniki-haftowane 'https://reczniki-haftowane.pl/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "corozya-reczniki-haftowane": {
      "url": "https://reczniki-haftowane.pl/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "corozya-reczniki-haftowane": {
      "type": "http",
      "url": "https://reczniki-haftowane.pl/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.corozya-reczniki-haftowane]
url = "https://reczniki-haftowane.pl/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "corozya-reczniki-haftowane": {
      "type": "remote",
      "url": "https://reczniki-haftowane.pl/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add corozya-reczniki-haftowane --url 'https://reczniki-haftowane.pl/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  corozya-reczniki-haftowane:
    url: "https://reczniki-haftowane.pl/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "corozya-reczniki-haftowane": {
      "Transport": "http",
      "Url": "https://reczniki-haftowane.pl/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add corozya-reczniki-haftowane -t streamable-http -u 'https://reczniki-haftowane.pl/mcp'
```

### Other

```json
{
  "mcpServers": {
    "corozya-reczniki-haftowane": {
      "type": "http",
      "url": "https://reczniki-haftowane.pl/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 77, 0)

- [security] Tool “get_ai_traffic_report” rewrote its description, which is the text the model reads
- [functional] Server version: 3.0.0 → 4.0.0

### 2026-11-04 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 74, 0)

- [functional] New tool “get_shop_policies”

### 2026-10-29 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 73, +1)

- [security] Tool “get_creator_link” rewrote its description, which is the text the model reads
- [security] Tool “list_colors” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 172 → 191
- [functional] Server version: 2.4.0 → 3.0.0
- [cosmetic] “list_colors” added an optional parameter “include_unavailable”
- [cosmetic] “list_colors” added an optional parameter “query”

### 2026-10-26 (score 72, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “list_designs” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 155 → 172
- [functional regression] Tool coverage: 35% → 30%
- [functional] Server version: 2.3.0 → 2.4.0
- [functional] New tool “list_design_tags”
- [cosmetic] “list_designs” added an optional parameter “ids”
- [cosmetic] “list_designs” added an optional parameter “limit”
- [cosmetic] “list_designs” added an optional parameter “motif_match”
- [cosmetic] “list_designs” added an optional parameter “offset”
- [cosmetic] “list_designs” added an optional parameter “persons”
- [cosmetic] “list_designs” added an optional parameter “sort”
- [cosmetic] “list_designs” added an optional parameter “tags”

## MCP tools (12)

### `search_products` (~400 tokens)

Produkty sklepu: id, name, cena, for (dla kogo), contains (skład), product_url, image_url. Pusty query listuje cały katalog (kilkanaście pozycji): nie zgaduj słów kluczowych, nie wpisuj zdania klienta. Kwoty: *_minor (grosze), *_formatted; regular_price_* tylko w promocji. Dobierz opcjonalne min_price_minor i max_price_minor do prośby klienta: liczby całkowite >= 0 w groszach, min_price_minor <= max_price_minor, granice włącznie, cena jednego produktu/zestawu. „od 100 do 200” lub „100-200” oznacza min_price_minor=10000 i max_price_minor=20000; „do 150” oznacza tylko max_price_minor=15000. Jeśli wynik jest pusty (total=0, truncated=false), a podano granice ceny, ponów search_products bez min_price_minor i max_price_minor, zachowując pozostałe argumenty. Wyjaśnij klientowi, że propozycje są spoza podanego budżetu.

Input parameters:

- `for` (string): Dla kogo: jedna osoba (mama, tata, babcia, dziadek, przyjaciółka), para (rodzice, dziadkowie, narzeczeni, ślub, rocznica ślubu), rodzina (rodzina, nowy dom). Wynik zawiera też produkty bez for.
- `limit` (integer)
- `max_price_minor` (integer): Budżet w groszach, np. 35000 = 350 zł
- `min_price_minor` (integer): Dolna granica ceny w groszach (włącznie), np. 20000 = 200 zł
- `query` (string)

Output parameters:

- `error` (object): Tylko przy isError: { code, message, ... }
- `items` (array)
- `total` (integer): Liczba pasujących produktów (po filtrach for i budżetu, przed limitem)

### `get_shop_policies` (~95 tokens)

Zasady sklepu: waluta PLN, metody i ceny dostawy, próg darmowej dostawy, termin realizacji z dostawą i opis materiału. Kwoty: *_minor (grosze), *_formatted (PLN); null gdy brak danych. Narzędzie nie przyjmuje parametrów. Pusty katalog daje not_found, niedostępność sklepu shop_unavailable.

Output parameters:

- `currency` (string)
- `delivery` (object)
- `error` (object): Tylko przy isError: { code, message, ... }
- `lead_time`: Termin realizacji wraz z czasem dostawy; null gdy brak
- `materials`: Opis materiału ze szczegółów produktu; null gdy brak

### `get_product_options` (~137 tokens)

Skład produktu (contents): przedmioty, ilości, positions (1-based), customizable i liczba kolorów. Wzory dla pozycji z design_category_id wybieraj z list_designs, których categories zawiera tę kategorię. Kolory pobierz przez list_colors dopiero przy wyborze koloru, podając asset_type_id. Dostawa, terminy i materiał: get_shop_policies. Ceny: *_minor (grosze), *_formatted (PLN); regular_price_* tylko w promocji. Po link z wyborami użyj get_creator_link.

Input parameters:

- `product_id` (integer, required)

Output parameters:

- `contents` (array)
- `creator_url` (string)
- `currency` (string): Kod waluty, zawsze PLN
- `error` (object): Tylko przy isError: { code, message, ... }
- `id` (integer)
- `name` (string)
- `price_formatted`: Aktualna cena jako tekst w PLN, np. „339,00 zł”; null gdy brak
- `price_minor`: Aktualna cena w groszach (PLN), liczba całkowita; null gdy brak
- `regular_price_formatted`: Cena regularna (tylko w promocji) jako tekst w PLN, np. „339,00 zł”; null gdy brak
- `regular_price_minor`: Cena regularna (tylko w promocji) w groszach (PLN), liczba całkowita; null gdy brak
- `text_max_length`: Maksymalna długość tekstu haftu (znaki)

### `list_colors` (~238 tokens)

Zamknięta lista kolorów typu przedmiotu: option_id (kreatora), color_name, color_family, color_hex, availability, as_of. Wywołaj dopiero, gdy klient wybiera kolor; asset_type_id weź z contents w get_product_options. Nazwę koloru klienta przekaż dosłownie w query: dopasowanie robi sklep i zwraca match (status, option_ids, message); nie dopasowuj nazw sam ani przybliżeniami i wybieraj tylko option_id z odpowiedzi. Dla status candidates lub needs_clarification dopytaj klienta; no_match oznacza brak takiego koloru. Brak pola stanu magazynowego: available znaczy tylko aktywna opcja. include_unavailable pokazuje też wyłączone opcje.

Input parameters:

- `asset_type_id` (integer, required)
- `include_unavailable` (boolean): Domyślnie false; true dodaje opcje unavailable
- `query` (string): Nazwa koloru od klienta, przekazana dosłownie (maks. 50 znaków)

Output parameters:

- `as_of` (string): Czas odczytu z backendu (UTC)
- `asset_type_id` (integer)
- `asset_type_name` (string)
- `availability_definition` (string)
- `colors` (array)
- `error` (object): Tylko przy isError: { code, message, ... }
- `match` (object): Tylko gdy podano query; wynik dopasowania wykonuje sklep

### `get_creator_link` (~201 tokens)

Link do kreatora z wyborami klienta w slots[]. Pozycja n z contents get_product_options odpowiada slots[n-1]. option_id z list_colors (colors[].option_id) dla typu przedmiotu, walidowany przez sklep przy każdym wywołaniu (błąd invalid_input z details[]: reason, allowed_option_ids, message; wybierz jedno z allowed_option_ids); drawing_id z list_designs, thread_id i font_id z list_fonts_threads. Przekaż wszystkie wybory klienta: kolor, wzór, nić, czcionkę i texts (mapa kluczy pól tekstowych). Bez slots[], tab i slot link nie ma ustawień (configuration_notice). tab wybiera zakładkę, slot (1-based) aktywny slot.

Input parameters:

- `product_id` (integer, required)
- `slot` (integer)
- `slots` (array)
- `tab` (string)

Output parameters:

- `as_of` (string): Czas walidacji kolorów w sklepie (UTC); obecne przy wywołaniu ze slots[]
- `configuration_notice` (string): Informacja, że link otworzy kreator bez ustawień personalizacji; obecna przy wywołaniu bez slots[], tab i slot
- `creator_url` (string)
- `error` (object): Tylko przy isError: { code, message, ... }
- `name` (string)
- `product_id` (integer)

### `list_designs` (~370 tokens)

Wyszukuje aktywne wzory haftu (filtr liczy sklep). Filtry opcjonalne: tags (identyfikatory wyłącznie z list_design_tags, do 10; w grupie OR, między grupami AND), motif_match any|all (all = wszystkie motywy na jednym wzorze), persons 1|2|initials (liczba imion/inicjały), category (nazwa lub slug), query (nazwa wzoru, do 100 znaków), ids (do 20), sort default|popular, limit (domyślnie 10, maks. 20) i offset. Wynik: total, has_more, applied_filters, empty_reason i relaxations (przy total=0 tylko propozycje poluzowania: powiedz klientowi, który warunek poluzowano; nie przedstawiaj ich jako spełnienia konkretnego motywu). Każdy wzór ma tags, personalization, texts (slot_key, label, max_chars) i match. Pole id to drawing_id używane przez kreator. WAŻNE: pokaż klientowi podgląd wzoru jako obraz - wstaw preview_markdown (![nazwa](preview_image_url)) do odpowiedzi, nie podawaj samego linku; gdy preview_markdown jest null, wzór nie ma podglądu.

Input parameters:

- `category` (string)
- `ids` (array)
- `limit` (integer)
- `motif_match` (string)
- `offset` (integer)
- `persons` (string)
- `query` (string)
- `sort` (string)
- `tags` (array): Identyfikatory tagów z list_design_tags

Output parameters:

- `applied_filters` (object): Filtry zastosowane przez sklep: tags, absorbed_tags, motif_match, persons, category, query
- `dictionary_version`
- `empty_reason`: no_match | no_match_query przy total=0
- `error` (object): Tylko przy isError: { code, message, ... }
- `has_more` (boolean): Czy są kolejne wzory po tej stronie (zwiększ offset)
- `items` (array)
- `limit` (integer)
- `offset` (integer)
- `relaxations` (array): Propozycje poluzowania filtra przy total=0 (action, relaxes, total, label); tylko propozycje, powiedz klientowi co poluzowano
- `sort_applied` (string): Zastosowane sortowanie (popular może działać jak default)
- `total` (integer): Liczba wszystkich pasujących wzorów (przed limitem i offsetem)

### `list_design_tags` (~91 tokens)

Słownik tagów wzorów haftu (grupy motyw, okazja, odbiorca; definicje, liczby wzorów, wartości persons) oraz instrukcja doboru. Wywołaj raz na rozmowę przed pierwszym filtrem tagów w list_designs; nie twórz własnych tagów. Narzędzie nie przyjmuje parametrów.

Output parameters:

- `dictionary_version`
- `error` (object): Tylko przy isError: { code, message, ... }
- `groups` (array): Grupy tagów (key, name, match_rule)
- `instructions` (string)
- `persons` (array): Dozwolone wartości persons
- `tags` (array): Tagi: id, name, group, parent, definition, not_for, designs_count

### `list_design_categories` (~78 tokens)

Listuje kategorie wzorów haftu, w których są aktywne wzory: id, nazwa, slug i liczba wzorów. Nazwę lub slug przekaż jako category do list_designs, aby zobaczyć wzory z danej kategorii. Narzędzie nie przyjmuje parametrów.

Output parameters:

- `error` (object): Tylko przy isError: { code, message, ... }
- `items` (array)
- `total` (integer): Liczba kategorii wzorów

### `list_fonts_threads` (~81 tokens)

Listuje publiczne czcionki i nici dostępne w kreatorze. Zwraca id jako odpowiednio font_id i thread_id, nazwę, podgląd jako pełny URL oraz gotowy markdown obrazu; nici zawierają także color_hex w formacie #RRGGBB. Narzędzie nie przyjmuje parametrów.

Output parameters:

- `error` (object): Tylko przy isError: { code, message, ... }
- `fonts` (array)
- `threads` (array)

### `search` (~52 tokens)

Wyszukuje publiczne produkty sklepu. Zwraca identyfikatory, tytuły i kanoniczne URL-e zgodne z formatem ChatGPT search/fetch.

Input parameters:

- `query` (string, required)

Output parameters:

- `error` (object): Tylko przy isError: { code, message, ... }
- `results` (array)

### `fetch` (~45 tokens)

Pobiera pełną treść publicznego produktu po id zwróconym przez search, wraz z tytułem i URL-em do cytowania.

Input parameters:

- `id` (string, required)

Output parameters:

- `error` (object): Tylko przy isError: { code, message, ... }
- `id` (string)
- `metadata` (object)
- `text` (string)
- `title` (string)
- `url` (string)

### `get_ai_traffic_report` (~305 tokens)

Analityka ruchu sklepu z Matomo (tylko agregaty). Wizyty, akcje, unikalni AI, i platformy. Bez argumentów raportuje wczoraj w Europe/Warsaw. period last_1/last_7/last_30 zamiast dat; compare=previous_period porównuje z poprzednim oknem. data_status rozróżnia zero od braku danych; unikalnych z wielu dni nie sumuj. Nazwę platformy podawaj tylko z by_provider; unknown = nieznana. Podaj źródło i niepewności z metadata.attribution_caveats. AI referrals to natywny kanał Matomo; kampanie AI są osobno, boty i cytowania nie są mierzone.

Input parameters:

- `breakdown` (string)
- `compare` (string): Porównanie z poprzednim oknem tej samej długości; domyślnie none
- `date_from` (string): Początek zakresu YYYY-MM-DD, domyślnie wczoraj w Europe/Warsaw
- `date_to` (string): Koniec zakresu YYYY-MM-DD, domyślnie wczoraj; zakres do 31 dni
- `period` (string): Ostatnie 1/7/30 dni do wczoraj w Europe/Warsaw; wyklucza date_from/date_to

Output parameters:

- `ai_mentions_citations` (object)
- `ai_referrals` (object)
- `ai_tagged_campaigns` (object)
- `comparison` (object)
- `daily` (array)
- `data_status` (string): Ruch AI, potwierdzone zero AI lub brak danych (nieznane)
- `error` (object): Tylko przy isError: { code, message, ... }
- `landing_pages` (object)
- `metadata` (object)
- `not_counted_as_ai` (object)
- `other_sources` (object)
- `schema_version` (string)
- `totals` (object)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane#diagnostics

## Score history

- 2026-11-05: 77
- 2026-11-04: 77
- 2026-11-03: 76
- 2026-11-02: 76
- 2026-11-01: 75
- 2026-10-31: 75
- 2026-10-30: 74
- 2026-10-29: 74
- 2026-10-28: 73
- 2026-10-27: 73
- 2026-10-26: 72
- 2026-10-25: 72
- 2026-10-24: 71
- 2026-10-23: 71
- 2026-10-22: 71
- 2026-10-21: 70
- 2026-10-20: 69

## Common questions

### What is the Ręczniki Haftowane MCP server?

Ręczniki Haftowane is an MCP server listed in the public MCP registry as io.github.corozya/reczniki-haftowane. Publiczny, tylko do odczytu MCP z katalogiem produktów sklepu Ręczniki Haftowane. This page covers its hosted endpoint (https://reczniki-haftowane.pl/mcp).

### Is the Ręczniki Haftowane MCP server safe to use?

Ręczniki Haftowane scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Ręczniki Haftowane MCP server expose?

Ręczniki Haftowane exposes 12 tools: search_products, get_shop_policies, get_product_options, list_colors, get_creator_link, and 7 more. Their descriptions and schemas cost roughly 2,093 tokens of context every time the server is loaded.

### Does the Ręczniki Haftowane MCP server require authentication?

No. We connected to Ręczniki Haftowane without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Ręczniki Haftowane MCP server still maintained?

Ręczniki Haftowane is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Ręczniki Haftowane MCP server?

VerifyMCP ran 13 checks on Ręczniki Haftowane, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://reczniki-haftowane.pl/mcp
- Website: https://reczniki-haftowane.pl/dla-agentow
- Changelog RSS feed: https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane.xml
- Changelog JSON feed: https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane.json
- HTML version of this page: https://verifymcp.io/servers/corozya-reczniki-haftowane/reczniki-haftowane
