Agent też powinien umieć wyjaśnić wynik.

Daj mu raport, dokładne źródła i rachunek zmiany pomiędzy dwoma okresami. Zysku zachowuje różnicę między brakującą stawką, jawnym zerem i pełną marżą.

Trzy narzędzia pracują na danych jawnie przekazanych w wywołaniu. Nie odczytują sklepu ani konta w witrynie.

Prześledź konkretne wywołanie

Od adresu do pierwszego sprawdzalnego wywołania.

  1. Dodaj zdalny serwer.

    W ustawieniach integracji swojego klienta wybierz zdalny serwer MCP i wpisz https://zysku.pl/api/mcp. Klient musi obsługiwać transport HTTPS oraz OAuth; sam katalog tools.json nie tworzy połączenia.

  2. Sprawdź zgodę Zysku.

    Na stronie autoryzacji sprawdź nazwę klienta, jego adres powrotu i zakres tools:read. Zgoda obejmuje trzy narzędzia podglądu na przekazanych danych. Nie otwiera konta sklepu ani zakupionego raportu. Zatwierdź wyłącznie połączenie, które sam rozpocząłeś.

  3. Zacznij od przykładu.

    Po powrocie do klienta sprawdź listę trzech narzędzi poniżej. Wywołaj zysku_preview_report z argumentami demonstracyjnymi. Pełna marża ma pozostać nieustalona, a wynik po znanych kosztach wynieść 85 zł. Dopiero potem przekaż wybrane własne dane.

To instrukcja konfiguracji, a nie komunikat „Połączono”. Klient przeprowadza autoryzację, przechowuje swoje połączenie i pokazuje rezultat wywołania. Usunięcie samego wpisu integracji nie zawsze odwołuje zgodę — użyj funkcji odwołania OAuth w kliencie.

Trzy działania. Ta sama metoda raportu.

Podgląd wykorzystuje istniejące moduły CSV, kwot, inspektora, korekty zamówień i porównania okresów Zysku. Nie ma drugiego sposobu liczenia dla agenta.

zysku_preview_report

Sprawdza zamówienia, koszty SKU i cztery kwoty okresu. Zwraca podsumowanie albo listę problemów do poprawy.

Argumenty
input, opcjonalnie issuePage.
Wynik
status: invalid | partial | complete, summary, sources, issues i strona problemów. Przy błędnych danych podsumowanie ma wartość null.

zysku_inspect_report

Przegląda zamówienia, zwroty, pozycje i braki pojedynczego raportu. Jawny view: "comparison" porównuje dwa kompletne okresy: zakresy, most zmiany, ilości i stawki SKU oraz dokładne źródła. view: "correction" uzgadnia propozycję korekty tych samych zamówień i jej wpływ przy dotychczasowych kosztach.

Pojedynczy raport
Dotychczasowe input i view: orders | refunds | lines | missing | period | unused; filtry i referencje pozostają bez zmian.
Porównanie okresów
view: "comparison", pełne A i B, każde z input oraz scope: {from, to, confirmed}. comparisonView: summary | issues | orders | refunds | skus | extras | sources. Opcjonalnie query, page, slot, source, entryKey.
Korekta tych samych zamówień
view: "correction", całe input, candidateOrders i osobne candidateOrderMap. Obie mapy wymagają także Created at. correctionView: summary | issues | changes | sources. Nie stosuje korekty.
Wynik porównania
Oba raporty, porównywalność, siedem składników mostu i strony źródeł. Ten tryb nie odsyła raw CSV, nazw plików, ID ani SKU; klucze i numery rekordów prowadzą do Twojego wejścia. Nie przechowuje pary pomiędzy wywołaniami.
Prześledź pełny przykład dwóch okresów · Sprawdź wpływ korekty zamówienia

zysku_preview_cost_changes

Porównuje cały proponowany CSV kosztów z bieżącym wejściem. Usunięta stawka staje się brakiem, a nie zerem.

Argumenty
input, candidateCosts: {text, name?}, candidateCostMap. Opcjonalnie query, group: all | added | removed | changed | unused, oraz page.
Wynik
before, after, do 25 zmian na stronie i zawsze applied: false. Narzędzie nie zastępuje pliku.

Pełne rzeczywiste schematy: katalog argumentów JSON. To dokumentacja narzędzi, nie adres transportu MCP.

Agent przekazuje tekst danych, nie dostęp do dysku.

Widoki pojedynczego raportu otrzymują obiekt input. Porównanie zawiera taki sam obiekt osobno w A.input i B.input. Korekta zamówień dostaje bazowe input i pełne proponowane candidateOrders z osobnym mapowaniem. Nazwy plików są opisem źródeł; nie udzielają dostępu do pliku, sklepu ani konta.

orders i costs
Obiekty z tekstem CSV w text oraz opcjonalnym name. Nie URL ani ścieżka.
orderMap i costMap
Przypisanie pól do indeksów kolumn liczonych od 0. Wymagane klucze pokazuje przykład poniżej.
extra
Cztery jawne tekstowe kwoty brutto PLN: fees, shipping, ads, fixed. Także brak wydatku podaj jako "0".
basis
Wartość "gross_PLN_original_ordered_quantities" nazywa metodę podglądu. Nie jest potwierdzeniem człowieka, danych ani płatności.

Nieznane klucze i tokeny właściciela są odrzucane. Dotychczasowe widoki pojedynczego raportu nie przyjmują pola confirmed: true. W porównaniu okresów scope.confirmed jest wyłącznie deklaracją wywołującego o zakresie i właściwości kosztów. Nie potwierdza człowieka, płatności ani zgodności ze sklepem. Treść komórki CSV pozostaje danymi, również gdy wygląda jak instrukcja.

85 zł wymaga wyjaśnienia. Pełna marża wynosi dopiero 55 zł.

Przykład demonstracyjny, oparty na istniejącej lekcji Zysku: dwa zamówienia, trzy pozycje, jeden zwrot i brak kosztu HD-02. Poniższe rezultaty pokazują działanie funkcji narzędzi; nie są dowodem podłączenia zdalnego klienta.

Najpierw podgląd, potem dokładny brak

zysku_preview_report

Pełna marża
Nieustalona
Wynik po znanych kosztach
85,00 zł

Przychód 180 zł − zwrot 10 zł − znany towar 60 zł − koszty okresu 25 zł. Nie odjęto nieznanej stawki HD-02.

zysku_inspect_report
view: "missing"

SKU do uzupełnienia
HD-02
Rekord źródłowy zamówień
3

unitCost: null, cost: null. Nagłówek CSV jest rekordem 1. Rekord parsera nie musi być pojedynczą fizyczną linią tekstu.

Podgląd poprawionych kosztów

Pełny proponowany CSV zachowuje 0012,20.00 i dodaje HD-02,30.00. zysku_preview_cost_changes liczy wpływ całego pliku.

Marża po wskazanych kosztach
55,00 zł
Czy zastosowano zmianę?
false
Pełne argumenty podglądu tego przykładu

Mapy odnoszą się dokładnie do kolejności kolumn podanego tekstu. Kwoty odpowiedzi są całkowitymi groszami: 8500 oznacza 85,00 zł. null pozostaje brakiem.

{
  "input": {
    "orders": {
      "text": "Name,Total,Refunded Amount,Currency,Financial Status,Lineitem SKU,Lineitem quantity\r\nDEMO-A,100.00,10.00,PLN,partially_refunded,0012,2\r\n,,,,,HD-02,1\r\nDEMO-B,80.00,0.00,PLN,paid,0012,1\r\n",
      "name": "uzgodnienie-shopify-zamowienia.csv"
    },
    "costs": {
      "text": "SKU,unit_cost\r\n0012,20.00\r\n",
      "name": "uzgodnienie-shopify-koszty-brak.csv"
    },
    "orderMap": {
      "Id": 0,
      "Total": 1,
      "Refunded Amount": 2,
      "Currency": 3,
      "Financial Status": 4,
      "Lineitem SKU": 5,
      "Lineitem quantity": 6
    },
    "costMap": {
      "SKU": 0,
      "unit_cost": 1
    },
    "extra": {
      "fees": "5.00",
      "shipping": "10.00",
      "ads": "10.00",
      "fixed": "0.00"
    },
    "basis": "gross_PLN_original_ordered_quantities"
  }
}
Jak agent powinien opisać ten wynik?
Pełna marża jest nieustalona, ponieważ HD-02 nie ma kosztu. Wynik po znanych kosztach to 85 zł. Brak dotyczy rekordu CSV 3. Przy proponowanej stawce HD-02 30 zł, z zachowaniem kosztu 0012, podgląd marży wynosi 55 zł. Zmiana nie została zastosowana.

To opis danych demonstracyjnych. Agent powinien sprawdzić własne źródła i zakres kosztów przed użyciem wniosków.

Otwórz te same dane w warsztacie

W przeglądarce osobno potwierdzisz podstawę i uruchomisz obliczenie. Link nie importuje wyniku agenta ani nie nadaje uprawnień do eksportu.

Dwa okresy. Każdy wkład do zmiany ma źródło.

zysku_inspect_report z view: "comparison" otrzymuje dwa pełne zestawy zamówień, kosztów i deklaracji zakresu. Przykład poniżej jest demonstracyjny: nie stanowi wyniku sklepu ani dowodu połączenia Twojego klienta.

Marża spadła o 250 zł — sprawdź rachunek.

A · wrzesień
2 800,00 zł
B · październik
2 550,00 zł
Zmiana B−A
−250,00 zł

Rozłączne zakresy, odrębne ID, jawne stawki brutto PLN. Różna długość miesięcy jest wskazana; sumy nie są automatycznie normalizowane na dzień.

Suma siedmiu wkładów

  • Przychód: +1 000 zł
  • Zwroty: −200 zł
  • Towar: −1 100 zł
  • Prowizje: −120 zł
  • Wysyłka: +70 zł
  • Reklama: +200 zł
  • Pozostałe: −100 zł

To rachunek podanych liczb, bez zgadywania przyczyn biznesowych. Data utworzenia zamówienia nie jest datą zdarzenia zwrotu.

Od kosztu SKU do dokładnego rekordu.

comparisonView: "skus" zwraca dla sku-0 zmianę kosztu +1 300 zł: +800 zł z różnicy ilości przy stawce A i +500 zł ze zmiany stawki przy ilości B. To rozpisanie ma sens tylko przy obu znanych stawkach. Brak kosztu pozostawia pełną zmianę marży jako null.

W pozycji znajdziesz gotowe references[].lookup. Dodaj te opcje do tych samych kompletnych A/B i wywołaj narzędzie ponownie:

{"view":"comparison","comparisonView":"sources","slot":"B","source":"costs","entryKey":"sku-0","page":0}

Odpowiedź wskazuje rekord CSV 2 i przypisane kolumny: SKU 1, unit_cost 2, Currency 3. Sprawdź je we własnym wejściu. Tryb porównania nie odsyła raw CSV ani tożsamości; klucz nie jest zapisanym uchwytem serwera.

Pełne argumenty porównania dwóch okresów

Argumenty tego przykładu wykonuje rzeczywisty SDK. Każda kolejna strona wymaga tych samych kompletnych wejść. Stronicowanie zmienia odpowiedź, a nie zakres obliczenia.

{
  "view": "comparison",
  "A": {
    "input": {
      "orders": {
        "text": "Id,Total,Refunded Amount,Currency,Financial Status,Lineitem SKU,Lineitem quantity,Created at\nA1,7200,0,PLN,paid,TS-01,80,2026-09-01\nA2,4800,600,PLN,partially_refunded,HD-02,40,2026-09-03"
      },
      "costs": {
        "text": "SKU,unit_cost,Currency\nTS-01,40,PLN\nHD-02,80,PLN"
      },
      "orderMap": {
        "Id": 0,
        "Total": 1,
        "Refunded Amount": 2,
        "Currency": 3,
        "Financial Status": 4,
        "Lineitem SKU": 5,
        "Lineitem quantity": 6,
        "Created at": 7
      },
      "costMap": {
        "SKU": 0,
        "unit_cost": 1
      },
      "extra": {
        "fees": "480",
        "shipping": "520",
        "ads": "1200",
        "fixed": "0"
      },
      "basis": "gross_PLN_original_ordered_quantities"
    },
    "scope": {
      "from": "2026-09-01",
      "to": "2026-09-30",
      "confirmed": true
    }
  },
  "B": {
    "input": {
      "orders": {
        "text": "Id,Total,Refunded Amount,Currency,Financial Status,Lineitem SKU,Lineitem quantity,Created at\nB1,8000,0,PLN,paid,TS-01,100,2026-10-01\nB2,5000,800,PLN,partially_refunded,HD-02,40,2026-10-03"
      },
      "costs": {
        "text": "SKU,unit_cost,Currency\nTS-01,45,PLN\nHD-02,75,PLN"
      },
      "orderMap": {
        "Id": 0,
        "Total": 1,
        "Refunded Amount": 2,
        "Currency": 3,
        "Financial Status": 4,
        "Lineitem SKU": 5,
        "Lineitem quantity": 6,
        "Created at": 7
      },
      "costMap": {
        "SKU": 0,
        "unit_cost": 1
      },
      "extra": {
        "fees": "600",
        "shipping": "450",
        "ads": "1000",
        "fixed": "100"
      },
      "basis": "gross_PLN_original_ordered_quantities"
    },
    "scope": {
      "from": "2026-10-01",
      "to": "2026-10-31",
      "confirmed": true
    }
  }
}
Wynik, nieporównywalność i limity — PL / EN

Pole comparisonView: summary, issues, orders, refunds, skus, extras, sources. Listy mają do 12 pozycji oraz jawną stronę, liczbę wszystkich pozycji i kolejną stronę. Wspólne ID, nakładające się zakresy i nieznane lub sprzeczne daty blokują porównywalność, także przy zadeklarowanym potwierdzeniu.

Dwa wejścia łącznie mieszczą do 10 000 rekordów zamówień i 10 000 kosztów, z niższą granicą 900 KiB JSON. Nie usuwaj rekordów w celu zmieszczenia żądania. Podsumowanie zawsze obejmuje całość obu przekazanych wejść. Pełny rzeczywisty wynik demonstracyjny JSON.

Send complete A/B inputs on every call. Summary totals cover both complete inputs. Views and source references are separately paginated; no data is silently truncated. Missing cost keeps the full margin difference null. Opaque keys resolve financial entries through record/column numbers in your own input; no raw CSV, filenames, order IDs or SKU identities are echoed. No saved pair, account, purchase or paid export is added.

Korekta jednego zamówienia. Cały wpływ do sprawdzenia.

Ten sam okres i te same zamówienia wymagają uzgodnienia tożsamości. Inspektor view: "correction" sprawdza pełne bazowe i proponowane źródło. Dopiero zgodność ID, pozycji SKU, pierwotnych ilości, PLN i literalnych dat pozwala wykorzystać te same koszty.

2800 zł → 2600 zł. Skąd −200 zł?

Total zamówienia
7200 → 7100 zł
Zwrot tego zamówienia
0 → 100 zł

Status zmienia się z paid na partially_refunded. Przychód spada o 100 zł, zwrot rośnie o 100 zł. Koszty towaru i cztery kwoty okresu pozostają te same.

Wpływ na cały raport
−200,00 zł
Czy zastosowano korektę?
false

revenueDelta: -10000 − refundDelta: 10000 = knownDelta: -20000 groszy. To dane demonstracyjne i rachunek zmiany, bez ustalania jej przyczyny biznesowej.

Najpierw źródła, potem wniosek.

correctionView: "changes" prowadzi od change-0 osobno do beforeOrders, candidateOrders i costs. Przykład wskazuje rekord 2 w obu wersjach zamówień; po zmianie kolejności każda referencja wskazuje rzeczywisty rekord własnego źródła. Dodaj zwrócone opcje do tego samego pełnego wejścia:

{"view":"correction","correctionView":"sources","source":"candidateOrders","entryKey":"change-0","page":0}

Inne daty, SKU, ilość, waluta lub zestaw zamówień blokują przeniesienie kosztów: eligible: false, after: null, impact: null. Samo potwierdzenie nie pomija kontroli. Przy brakującej stawce pełna marginDelta pozostaje null; częściowy knownDelta jest odrębny.

Pełne argumenty korekty tych samych zamówień

Obie mapy wymagają ośmiu przypisanych kolumn, także Created at. Każde wywołanie i każda strona dostaje cały bazowy input oraz candidateOrders i candidateOrderMap. Podgląd nie przechowuje pary ani nie stosuje zmiany.

{
  "view": "correction",
  "input": {
    "orders": {
      "text": "Id,Total,Refunded Amount,Currency,Financial Status,Lineitem SKU,Lineitem quantity,Created at\nA1,7200,0,PLN,paid,TS-01,80,2026-09-01\nA2,4800,600,PLN,partially_refunded,HD-02,40,2026-09-03"
    },
    "costs": {
      "text": "SKU,unit_cost,Currency\nTS-01,40,PLN\nHD-02,80,PLN"
    },
    "orderMap": {
      "Id": 0,
      "Total": 1,
      "Refunded Amount": 2,
      "Currency": 3,
      "Financial Status": 4,
      "Lineitem SKU": 5,
      "Lineitem quantity": 6,
      "Created at": 7
    },
    "costMap": {
      "SKU": 0,
      "unit_cost": 1
    },
    "extra": {
      "fees": "480",
      "shipping": "520",
      "ads": "1200",
      "fixed": "0"
    },
    "basis": "gross_PLN_original_ordered_quantities"
  },
  "candidateOrders": {
    "text": "Id,Total,Refunded Amount,Currency,Financial Status,Lineitem SKU,Lineitem quantity,Created at\nA1,7100,100,PLN,partially_refunded,TS-01,80,2026-09-01\nA2,4800,600,PLN,partially_refunded,HD-02,40,2026-09-03"
  },
  "candidateOrderMap": {
    "Id": 0,
    "Total": 1,
    "Refunded Amount": 2,
    "Currency": 3,
    "Financial Status": 4,
    "Lineitem SKU": 5,
    "Lineitem quantity": 6,
    "Created at": 7
  }
}
Korekta, źródła i granice — PL / EN

correctionView: summary | issues | changes | sources. Listy mają do 12 pozycji z liczbą wszystkich i kolejną stroną. Sumy obejmują pełne wejścia. query filtruje tylko listę zmian; nie zmienia sum. Źródła zwracają przypisane pola i numery kolumn/rekordów bez raw CSV, nazw, ID ani SKU. Brak stawki ma pustą referencję, bez podstawienia innego źródła.

Obie wersje zamówień łącznie mieszczą do 10 000 rekordów, z dotychczasową granicą 900 KiB argumentów i 512 KiB odpowiedzi. Nie przycinaj danych, by zmieścić żądanie; przy zbyt dużej parze wróć do pełnego warsztatu. Pełny rzeczywisty wynik demonstracyjny JSON.

Use the existing inspector with explicit view=correction, complete input, candidateOrders and candidateOrderMap. Exact order identities, SKU positions, original quantities, PLN and literal dates must match before baseline costs are reused. correctionView selects summary, issues, changes or exact sources with explicit pagination. Unknown cost keeps full marginDelta null. The preview never applies or stores the correction, echoes raw identities or adds an account, purchase, export, authorization or retention. Re-send complete inputs for every call.

Podgląd nie oznacza dostępu do konta.

Zakres wyniku

Total i zwrot są liczone raz na zamówienie. Towar dotyczy pierwotnej ilości × podany koszt SKU. Brak stawki to null; jawne zero jest znanym kosztem.

Kwoty brutto PLN. Bez przeliczania VAT, walut i wyceny odzyskanego towaru. Marża po wskazanych kosztach nie jest zyskiem ani wynikiem księgowym. Pochodzenie caller_supplied_unverified nie potwierdza zgodności ze sklepem.

Zakres dostępu

Narzędzia nie odczytują konta, nie kupują raportu, nie uruchamiają AI, nie stosują korekt, nie zapisują pracy i nie publikują wyniku. Nie zwracają płatnego pliku CSV/PDF ani uprawnienia do jego pobrania.

CSV w narzędziu przeglądarkowym są odczytywane lokalnie. Zdalne wywołanie HTTPS stanowi odrębną drogę: dane jawnie wysłane przez klienta muszą zostać przetworzone przez serwer integracji. Nie należy mylić tych dwóch sposobów pracy.

Granice istniejących funkcji

Całe żądanie HTTP
1 MiB; same argumenty mają niższą granicę
Argumenty narzędzia
900 KiB JSON UTF-8
Wynik narzędzia
512 KiB; błąd zamiast cichego ucięcia
Wejście SDK
20 000 pól obiektów i elementów tablic
CSV
Do 10 000 rekordów danych; granica argumentów MCP jest niższa niż przeglądarkowe 15 MB na plik
Strona składników / referencji
12 elementów
Strona problemów / zmian kosztów
25 elementów

Serwer egzekwuje także limity częstości i równoległości połączeń. Jeżeli pełne dane przekraczają granicę MCP, otwórz je w warsztacie przeglądarkowym. Nie pomijaj części zamówień ani kosztów tylko po to, by otrzymać mniejsze żądanie — wynik dotyczyłby wtedy innego zakresu.

Co obejmuje zgoda na połączenie?

OAuth dopuszcza wyłącznie tools:read do opisanych powyżej podglądów. Połączenie jest pseudonimowe: nie potwierdza osoby, zakupów ani danych sklepu. Wysyłasz tylko dane wybrane w wywołaniu; klient nie uzyskuje dostępu do plików zapisanych w tej przeglądarce.

Token dostępu trwa do 15 minut, a rodzina odświeżania do 7 dni od pierwotnej granicy. Klient może odwołać połączenie przez standardowy mechanizm OAuth. Dane połączenia, terminy i zasady przesyłania CSV opisuje informacja o opcjonalnym MCP. Zasady Twojego klienta AI są odrębne.

Od diagnozy do raportu, który sam sprawdzisz.

Prześledź źródła i uzupełnij własne koszty w warsztacie. Podgląd sprawdzisz przed zakupem. Aktualny zakres, cenę i dostępność raportu pokazuje istniejąca oferta.