Server definition
- Hash
- sha256:a53b5faf467cf44127ad4bf8c9c0e5964036d3fe8fcc142014f0d04e64623280
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "Energy performance certificates (świadectwa charakterystyki energetycznej) for properties in Poland, from swiadectwo-energetyczne24.pl. All form values and all messages for the end user are in Polish.\n\nOrder flow:\n1. get_certificate_options / get_certificate_information — answer questions about the offer (property types, base prices, add-ons, process, lead times) from our data, never from your own knowledge.\n2. create_certificate_order — create the order as soon as you know the property type. Always pass idempotency_key. KEEP the returned access_token: it is the only key to that order and every other order tool needs it. Never show it to the user.\n3. get_certificate_order_requirements — the backend decides what is still missing and gives you a ready Polish question plus the allowed values for each field. Ask ONE question at a time; never guess technical parameters.\n4. update_certificate_order — send the answers. Enum values must match the allowed options verbatim.\n5. calculate_certificate_price — the only source of prices. Never compute or recall a price yourself.\n6. get_payment_link — ONLY after you showed the price and the user explicitly agreed to it. Returns a secure link to our payment page; the user adds the building photo, accepts the terms and pays there. Never ask for card data and never collect legal consents yourself.\n7. get_certificate_order_status — progress of a placed order (no personal data). get_certificate_order returns the full stored data when you need to read back what was collected.\nDocuments: create_document_upload_url then add_property_document. This server never downloads files from URLs you provide. Unpaid orders expire after 30 days.",
"tools": [
{
"description": "Dołącza wgrany wcześniej plik do zamówienia. file_id musi pochodzić z create_document_upload_url dla TEGO zamówienia. Zdjęcie budynku (property_photo) jest potrzebne do wystawienia świadectwa, ale nie blokuje płatności — jeśli go nie dodasz, użytkownik doda je na stronie płatności albo dośle później na stronie zamówienia.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"document_type": {
"enum": [
"property_photo",
"floor_plan",
"building_project",
"technical_project",
"energy_document",
"other"
],
"type": "string"
},
"file_id": {
"description": "file_id zwrócony przez create_document_upload_url",
"maxLength": 500,
"minLength": 1,
"type": "string"
},
"filename": {
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
}
},
"required": [
"order_id",
"access_token",
"document_type",
"file_id"
],
"type": "object"
},
"name": "add_property_document",
"outputSchema": null
},
{
"description": "Wiążąca cena wyliczona przez nasz backend. Podaj order_id + access_token dla ceny konkretnego zamówienia albo samo property_type dla wyceny orientacyjnej. NIGDY nie licz ceny samodzielnie i nie podawaj kwot z pamięci.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"discount_code": {
"description": "Kod rabatowy podany przez użytkownika. Sam go nie wymyślaj ani nie proponuj.",
"maxLength": 40,
"type": "string"
},
"options": {
"additionalProperties": false,
"properties": {
"express_24h": {
"description": "Dodatek Express 8H – realizacja w 8 godzin roboczych (nazwa pola historyczna).",
"type": "boolean"
},
"paper_version": {
"type": "boolean"
}
},
"type": "object"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
},
"property_type": {
"description": "Wymagane, gdy nie podajesz order_id.",
"enum": [
"mieszkanie",
"dom",
"lokal-uzytkowy",
"budynek-nieogrzewany"
],
"type": "string"
}
},
"type": "object"
},
"name": "calculate_certificate_price",
"outputSchema": null
},
{
"description": "Tworzy zamówienie świadectwa charakterystyki energetycznej. NIE musisz mieć wszystkich danych — podaj, co już wiesz; odpowiedź zawiera brakujące pola i pytanie, które zadać jako następne. Zwrócony access_token jest jedynym kluczem do tego zamówienia: zapamiętaj go i przekazuj do pozostałych narzędzi. Zamówienie nie jest opłacone dopóki użytkownik nie przejdzie przez link z get_payment_link.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"address": {
"additionalProperties": false,
"description": "Adres nieruchomości.",
"properties": {
"apartment_number": {
"maxLength": 30,
"type": "string"
},
"building_number": {
"maxLength": 30,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"postal_code": {
"maxLength": 10,
"type": "string"
},
"street": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"customer": {
"additionalProperties": false,
"description": "Dane kontaktowe klienta.",
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"first_name": {
"maxLength": 100,
"type": "string"
},
"last_name": {
"maxLength": 100,
"type": "string"
},
"phone": {
"maxLength": 40,
"type": "string"
}
},
"type": "object"
},
"doors": {
"description": "Tylko dla `dom`: drzwi zewnętrzne i bramy w ogrzewanej bryle.",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"height_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
},
"material": {
"enum": [
"Stalowe",
"Aluminiowe",
"PVC",
"Drewniane",
"Nie wiem"
],
"type": "string"
},
"width_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
}
},
"required": [
"material",
"count"
],
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"fields": {
"description": "Pola specyficzne dla typu nieruchomości, w formie ścieżka → wartość.",
"items": {
"additionalProperties": false,
"properties": {
"path": {
"description": "Ścieżka pola z get_certificate_order_requirements, np. \"heating.heating\".",
"maxLength": 200,
"type": "string"
},
"value": {
"anyOf": [
{
"maxLength": 2000,
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"maxLength": 200,
"type": "string"
},
"maxItems": 20,
"type": "array"
}
],
"description": "Wartość pola. Dla pól enum użyj DOKŁADNIE jednej z wartości z `options` — inna wartość jest odrzucana błędem INVALID_FIELD_VALUE."
}
},
"required": [
"path",
"value"
],
"type": "object"
},
"maxItems": 80,
"type": "array"
},
"idempotency_key": {
"description": "Dowolny stały identyfikator tej próby zamówienia. Ponowne wywołanie z tym samym kluczem zwraca istniejące zamówienie zamiast tworzyć duplikat. Ustawiaj zawsze.",
"maxLength": 200,
"minLength": 8,
"type": "string"
},
"options": {
"additionalProperties": false,
"description": "Płatne dodatki: express_24h (Express 8H – 8 godzin roboczych; nazwa pola historyczna), paper_version.",
"properties": {
"express_24h": {
"description": "Dodatek Express 8H – realizacja w 8 godzin roboczych (nazwa pola historyczna).",
"type": "boolean"
},
"paper_version": {
"type": "boolean"
}
},
"type": "object"
},
"property": {
"additionalProperties": false,
"description": "Podstawowe parametry: powierzchnia użytkowa, wysokość pomieszczeń, rok oddania do użytkowania.",
"properties": {
"area_m2": {
"exclusiveMinimum": 0,
"maximum": 10000,
"type": "number"
},
"height_m": {
"exclusiveMinimum": 0,
"maximum": 20,
"type": "number"
},
"year_built": {
"maximum": 2100,
"minimum": 1800,
"type": "integer"
}
},
"type": "object"
},
"property_type": {
"description": "Typ nieruchomości. mieszkanie = apartment, dom = house, lokal-uzytkowy = commercial unit, budynek-nieogrzewany = unheated building up to 70 m² (summer cabin, outbuilding, workshop) with no heating or air conditioning.",
"enum": [
"mieszkanie",
"dom",
"lokal-uzytkowy",
"budynek-nieogrzewany"
],
"type": "string"
},
"windows": {
"description": "Tylko dla `dom`: wymiary okien. Jednakowe okna podaje się raz z liczbą sztuk.",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"height_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
},
"width_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
}
},
"required": [
"width_cm",
"height_cm",
"count"
],
"type": "object"
},
"maxItems": 30,
"type": "array"
}
},
"required": [
"property_type"
],
"type": "object"
},
"name": "create_certificate_order",
"outputSchema": null
},
{
"description": "Zwraca jednorazowy URL do wgrania pliku (metodą PUT) i file_id, którym potem dołączysz plik przez add_property_document. MCP nigdy nie pobiera plików z Internetu — bajty wysyła ten, kto je ma.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"document_type": {
"enum": [
"property_photo",
"floor_plan",
"building_project",
"technical_project",
"energy_document",
"other"
],
"type": "string"
},
"filename": {
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"mime": {
"description": "image/jpeg, image/png, image/webp lub application/pdf (HEIC nie przyjmujemy)",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
},
"size_bytes": {
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"order_id",
"access_token",
"document_type",
"filename",
"mime",
"size_bytes"
],
"type": "object"
},
"name": "create_document_upload_url",
"outputSchema": null
},
{
"description": "Fakty o usłudze pochodzące z naszego systemu: dla jakich nieruchomości wystawiamy świadectwo, przebieg procesu, czasy realizacji, wymagane dokumenty, podstawa prawna, FAQ i kontakt. Używaj tego zamiast odpowiadać z własnej wiedzy.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"topics": {
"description": "Zawęź odpowiedź do wybranych tematów. Domyślnie zwracane są wszystkie.",
"items": {
"enum": [
"overview",
"property_types",
"pricing",
"process",
"lead_time",
"documents",
"legal",
"faq",
"contact"
],
"type": "string"
},
"maxItems": 9,
"type": "array"
}
},
"type": "object"
},
"name": "get_certificate_information",
"outputSchema": null
},
{
"description": "Oferta: typy nieruchomości, dla których wystawiamy świadectwo (z ceną bazową brutto PLN), płatne dodatki (Express 8H, wersja papierowa), obsługiwane typy dokumentów i listy dozwolonych wartości (ogrzewanie, CWU, wentylacja, okna, drzwi). Wywołaj jako pierwsze, jeśli użytkownik nie określił typu nieruchomości. Ceny tu są cennikowe — cenę konkretnego zamówienia liczy calculate_certificate_price. Wartości enum podawaj później DOKŁADNIE tak, jak tu wyglądają.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"property_type": {
"description": "Zawęź listę typów nieruchomości do jednego typu.",
"enum": [
"mieszkanie",
"dom",
"lokal-uzytkowy",
"budynek-nieogrzewany"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_certificate_options",
"outputSchema": null
},
{
"description": "Pełny stan zamówienia: zebrane wartości pól, dołączone dokumenty, cena, status i braki. Używaj, gdy musisz odczytać, co już zapisano; do samego postępu realizacji wystarczy get_certificate_order_status. Dane osobowe zwracamy tylko posiadaczowi access_token.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
}
},
"required": [
"order_id",
"access_token"
],
"type": "object"
},
"name": "get_certificate_order",
"outputSchema": null
},
{
"description": "Zwraca listę pól, których brakuje, żeby zamówienie było gotowe do płatności — razem z gotowym pytaniem po polsku i dozwolonymi wartościami. To backend decyduje, czego brakuje; nie zgaduj i nie pytaj o pola spoza tej listy.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
}
},
"required": [
"order_id",
"access_token"
],
"type": "object"
},
"name": "get_certificate_order_requirements",
"outputSchema": null
},
{
"description": "Skrócony status zamówienia — bez danych osobowych i bez wartości pól. Używaj do informowania użytkownika o postępie realizacji (płatność, przygotowanie świadectwa, wysyłka).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
}
},
"required": [
"order_id",
"access_token"
],
"type": "object"
},
"name": "get_certificate_order_status",
"outputSchema": null
},
{
"description": "Zwraca bezpieczny link do strony płatności dla kompletnego zamówienia. Na tej stronie użytkownik widzi podsumowanie i cenę, może dodać zdjęcie budynku (jeśli go jeszcze nie ma — da się je też dosłać po płatności), akceptuje regulamin i płaci u operatora płatności. WYWOŁUJ WYŁĄCZNIE po tym, jak pokażesz użytkownikowi cenę i dostaniesz od niego wyraźną zgodę. MCP nigdy nie przyjmuje danych karty.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
}
},
"required": [
"order_id",
"access_token"
],
"type": "object"
},
"name": "get_payment_link",
"outputSchema": null
},
{
"description": "Częściowa aktualizacja zamówienia — podajesz tylko te pola, które chcesz ustawić lub zmienić; reszta zostaje nienaruszona. Zwraca aktualny status i pozostałe braki. Jeśli którakolwiek wartość jest spoza dozwolonej listy, NIC nie zostaje zapisane i dostajesz błąd INVALID_FIELD_VALUE.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"access_token": {
"description": "access_token zwrócony JEDEN RAZ przez create_certificate_order. Bez niego zamówienie jest niedostępne — zachowaj go na czas rozmowy i nigdy nie pokazuj użytkownikowi.",
"maxLength": 200,
"minLength": 20,
"type": "string"
},
"address": {
"additionalProperties": false,
"description": "Adres nieruchomości.",
"properties": {
"apartment_number": {
"maxLength": 30,
"type": "string"
},
"building_number": {
"maxLength": 30,
"type": "string"
},
"city": {
"maxLength": 120,
"type": "string"
},
"postal_code": {
"maxLength": 10,
"type": "string"
},
"street": {
"maxLength": 200,
"type": "string"
}
},
"type": "object"
},
"customer": {
"additionalProperties": false,
"description": "Dane kontaktowe klienta.",
"properties": {
"email": {
"maxLength": 200,
"type": "string"
},
"first_name": {
"maxLength": 100,
"type": "string"
},
"last_name": {
"maxLength": 100,
"type": "string"
},
"phone": {
"maxLength": 40,
"type": "string"
}
},
"type": "object"
},
"doors": {
"description": "Tylko dla `dom`: drzwi zewnętrzne i bramy w ogrzewanej bryle.",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"height_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
},
"material": {
"enum": [
"Stalowe",
"Aluminiowe",
"PVC",
"Drewniane",
"Nie wiem"
],
"type": "string"
},
"width_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
}
},
"required": [
"material",
"count"
],
"type": "object"
},
"maxItems": 20,
"type": "array"
},
"fields": {
"description": "Pola specyficzne dla typu nieruchomości, w formie ścieżka → wartość.",
"items": {
"additionalProperties": false,
"properties": {
"path": {
"description": "Ścieżka pola z get_certificate_order_requirements, np. \"heating.heating\".",
"maxLength": 200,
"type": "string"
},
"value": {
"anyOf": [
{
"maxLength": 2000,
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"items": {
"maxLength": 200,
"type": "string"
},
"maxItems": 20,
"type": "array"
}
],
"description": "Wartość pola. Dla pól enum użyj DOKŁADNIE jednej z wartości z `options` — inna wartość jest odrzucana błędem INVALID_FIELD_VALUE."
}
},
"required": [
"path",
"value"
],
"type": "object"
},
"maxItems": 80,
"type": "array"
},
"options": {
"additionalProperties": false,
"description": "Płatne dodatki: express_24h (Express 8H – 8 godzin roboczych; nazwa pola historyczna), paper_version.",
"properties": {
"express_24h": {
"description": "Dodatek Express 8H – realizacja w 8 godzin roboczych (nazwa pola historyczna).",
"type": "boolean"
},
"paper_version": {
"type": "boolean"
}
},
"type": "object"
},
"order_id": {
"description": "order_id zwrócony przez create_certificate_order",
"format": "uuid",
"type": "string"
},
"property": {
"additionalProperties": false,
"description": "Podstawowe parametry: powierzchnia użytkowa, wysokość pomieszczeń, rok oddania do użytkowania.",
"properties": {
"area_m2": {
"exclusiveMinimum": 0,
"maximum": 10000,
"type": "number"
},
"height_m": {
"exclusiveMinimum": 0,
"maximum": 20,
"type": "number"
},
"year_built": {
"maximum": 2100,
"minimum": 1800,
"type": "integer"
}
},
"type": "object"
},
"windows": {
"description": "Tylko dla `dom`: wymiary okien. Jednakowe okna podaje się raz z liczbą sztuk.",
"items": {
"additionalProperties": false,
"properties": {
"count": {
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"height_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
},
"width_cm": {
"exclusiveMinimum": 0,
"maximum": 1000,
"type": "number"
}
},
"required": [
"width_cm",
"height_cm",
"count"
],
"type": "object"
},
"maxItems": 30,
"type": "array"
}
},
"required": [
"order_id",
"access_token"
],
"type": "object"
},
"name": "update_certificate_order",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:a53b5faf467cf44127ad4bf8c9c0e5964036d3fe8fcc142014f0d04e64623280 | sha256sum