sejm-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sejm-mcpJak głosował poseł Tusk nad ustawą budżetową na 2024 rok?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Co możesz zapytać
Pytaj zwyczajnie, po polsku. Asystent sam sprawdzi dane w Sejmie.
„Jak głosował mój poseł nad ustawą budżetową na 2024 rok?”
„Czy Sejm odrzucił weto prezydenta do ustawy o rynku kryptoaktywów?”
„Ile głosowań opuściła posłanka X i ile z tych dni Sejm uznał za usprawiedliwione?”
„Na które interpelacje do ministra zdrowia odpowiedź się spóźnia?”
„Na jakim etapie jest projekt ustawy o …?”
„Czym Sejm zajmie się na najbliższym posiedzeniu?”
„Czy ustawa budżetowa na 2026 rok już obowiązuje i od kiedy?”
„Co mówi art. 52 Kodeksu pracy?”
„Co zmienia art. 1 projektu z druku 2457? Pokaż stronę w pliku.”
Działa z posłami, klubami, komisjami, głosowaniami, interpelacjami i zapytaniami, projektami ustaw, posiedzeniami, stenogramami i transmisjami, a także z aktami prawnymi z Dziennika Ustaw i Monitora Polskiego.
Related MCP server: legal_mcp
Instalacja
Serwer działa na Twoim komputerze. Poza Claude Desktop potrzebny jest
Node.js w wersji 22 lub nowszej; polecenie npx -y sejm-mcp samo pobierze
i uruchomi najnowszą wersję.
npx -y sejm-mcp # serwer MCP na stdio; zwykle uruchamia go Twój klient, nie TyGdy API Sejmu nie odpowiada, ten serwer też nie odpowie. Wtedy możesz użyć wersji hostowanej, która odpowiada z nocnej kopii bazy: https://mcp.leniwyposel.pl/mcp
Liczby o posłach (np. nieobecności) pochodzą wprost ze statystyk Sejmu i mogą różnić się od liczb na leniwyposel.pl, które stosuje własne reguły opisane na https://leniwyposel.pl/faq/#inne-niz-w-sejmie (apele o kworum, okna mandatów).
Claude Desktop
Kliknij go dwa razy albo przeciągnij do okna Claude Desktop.
Kliknij Zainstaluj.
Nic więcej nie trzeba instalować: Claude Desktop ma własny Node.js. W nowej rozmowie zapytaj o cokolwiek z listy powyżej.
Claude Code
claude mcp add sejm -- npx -y sejm-mcpZ opcją --scope user serwer będzie dostępny we wszystkich Twoich projektach.
Cursor
Kliknij przycisk Cursor u góry strony albo dopisz wpis do ~/.cursor/mcp.json
(dla jednego projektu: .cursor/mcp.json w jego katalogu):
{
"mcpServers": {
"sejm": {
"command": "npx",
"args": ["-y", "sejm-mcp"]
}
}
}VS Code
Kliknij przycisk VS Code u góry strony albo wpisz w terminalu:
code --add-mcp '{"name":"sejm","command":"npx","args":["-y","sejm-mcp"]}'Dla jednego projektu wystarczy plik .vscode/mcp.json:
{
"servers": {
"sejm": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sejm-mcp"]
}
}
}Windsurf
Dopisz wpis do ~/.codeium/windsurf/mcp_config.json (albo w Windsurfie: Settings → Cascade →
MCP Servers → View raw config) i odśwież listę serwerów:
{
"mcpServers": {
"sejm": {
"command": "npx",
"args": ["-y", "sejm-mcp"]
}
}
}Każdy program, który uruchamia lokalne serwery MCP (Zed, LM Studio, Goose i inne), przyjmie ten sam wpis co Cursor i Windsurf.
Claude Desktop bez pliku .mcpb: Ustawienia → Developer → Edit Config. Plik leży w
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) albo
%APPDATA%\Claude\claude_desktop_config.json (Windows). Po zapisaniu uruchom program ponownie.
Na Windowsie, jeśli serwer się nie uruchamia, zamień polecenie na
"command": "cmd", "args": ["/c", "npx", "-y", "sejm-mcp"].
W Claude Code działa też wtyczka z krótką instrukcją, jak odpowiadać na podstawie wyników:
/plugin marketplace add leniwyposel/sejm-mcp, potem /plugin install sejm@sejm-mcp.
Telefon i przeglądarka
Na razie nie. sejm-mcp działa na komputerze, a aplikacje mobilne i przeglądarkowe wersje asystentów łączą się tylko z serwerami w internecie.
Jak czytać odpowiedzi
Każda odpowiedź ma źródło. Asystent dostaje adresy danych Sejmu, z których powstała odpowiedź. Przy ważnych sprawach kliknij i sprawdź.
Klub z dnia głosowania. Liczy się klub, w którym poseł był tego dnia, a nie dzisiejszy.
Frekwencja według Sejmu. Opuszczone głosowania i usprawiedliwienia to statystyka samego Sejmu, bez przeliczeń.
Apel o kworum to nie głosowanie. Sejm sprawdza kworum na dwa sposoby: przyciskiem „obecny” albo prośbą o naciśnięcie dowolnego przycisku. Ten drugi rejestr zapisuje jak głosowanie (np. 23.04.2025, 33/5: 145 za, 47 przeciw, 237 wstrzymań), choć stenogram mówi „Stwierdzam kworum”. Serwer zna pięć takich przypadków z cytatem ze stenogramu i podaje je jako „kworum stwierdzone: N obecnych”. Naciśnięcie na apelu to obecność, a brak naciśnięcia nie wlicza się do nieobecności w głosowaniach (tak samo liczy statystyka Sejmu).
Wynik z progu. Przy wecie prezydenta i innych głosowaniach wymagających szczególnej większości werdykt wynika z progu (np. 3/5), a nie z tego, czy „za” było więcej niż „przeciw”.
Termin odpowiedzi na interpelację liczy się od doręczenia ministrowi, osobno dla każdego adresata. Prolongata to nie odpowiedź.
Dane są świeże. Każde pytanie idzie prosto do Sejmu.
Druk cytuje plik i stronę. Tekst druku przychodzi strona po stronie; przy każdej stronie asystent dostaje numer druku, nazwę pliku (np.
2457.pdf), numer strony i link, który otwiera PDF na tej stronie. Poproś o link, jeśli go nie podał.Odczyt maszynowy to nie tekst Sejmu. Część druków to skany bez warstwy tekstowej. Serwer może je odczytać maszynowo (OCR, na Twoim komputerze; przy ponad 10 stronach naraz najpierw zapyta, bo to potrwa) i zawsze oznacza taki tekst „odczyt maszynowy, możliwe błędy”. Liczby i nazwiska z takiej strony sprawdź w oryginale.
Gdy coś pójdzie nie tak
Asystent ma obowiązek powiedzieć Ci to na początku odpowiedzi, prostymi słowami. Co to znaczy:
„Wynik niepełny”. Część danych nie dotarła: zabrakło czasu (niektóre pytania wymagają dziesiątek zapytań do Sejmu), Sejm nie oddał jakiegoś kawałka albo plik PDF był za długi. Liczba jest wtedy dolną granicą („co najmniej”). Zadaj to samo pytanie jeszcze raz: to, co już pobrano, serwer pamięta przez 60 sekund, więc szybkie drugie podejście zwykle dokończy resztę. To samo zdanie pojawia się, gdy odpowiedź przekroczyła 28 tys. znaków: serwer skraca wtedy listę i podaje, jak dostać resztę (kolejna porcja, mniejszy limit, krótszy przedział dat).
„Pokazano 30 z 69”. Nic nie zginęło, to tylko pierwsza porcja długiej listy. Poproś o dalszą część.
Sejm nie odpowiada albo ma awarię (błędy 500, 502, 503, 504, brak połączenia). To nie Twoja wina: dane w Sejmie są, tylko teraz nie da się ich pobrać. Spróbuj za kilka minut albo użyj wersji hostowanej (https://mcp.leniwyposel.pl/mcp), która odpowiada z nocnej kopii bazy.
„Sejm nie ma takiego zasobu” (błąd 404). Najczęściej zły numer posiedzenia, pisma albo druku, zła kadencja (bieżąca to X, od 2023 r.) albo rzecz, której jeszcze nie ma. Sprawdź numer albo poproś asystenta, żeby go najpierw wyszukał.
Za dużo zapytań (błąd 429). Sejm chwilowo ogranicza liczbę pytań. Serwer już ponawiał; odczekaj minutę.
Adres odrzucony. Serwer pobiera wyłącznie dane z api.sejm.gov.pl. Innych stron nie otworzy.
Czego nie umie
Zna tylko to, co publikuje Sejm. Czego nie ma w rejestrze (np. kto kogo zastąpił w ławach poselskich, jak głosował senator), tego nie poda jako faktu.
PDF czyta w trzech miejscach: odpowiedzi ministrów na interpelacje i zapytania, teksty aktów prawnych i druki sejmowe (także DOCX i DOC). Tabele przychodzą spłaszczone do zwykłego tekstu. Skan w odpowiedzi ministra albo w akcie zostaje linkiem; skan w druku serwer odczyta maszynowo na prośbę. Zapisy posiedzeń komisji zostają linkiem do PDF.
Plik druku do 20 MB pobiera bez pytania. Sejm zwykle nie podaje rozmiaru z góry, więc serwer liczy bajty w trakcie pobierania: gdy plik przekroczy 20 MB, przerywa i pyta, czy pobrać całość (z podanym powodem). Na ten sam plik pyta raz na uruchomienie. Pliku ponad 200 MB nie pobierze wcale.
Nie ocenia posłów i nie układa rankingów. Podaje fakty, wnioski należą do Ciebie.
Asystent AI wciąż może się pomylić przy przepisywaniu liczb. Źródło jest po to, żeby to sprawdzić.
Prywatność
Działa na Twoim komputerze i łączy się wyłącznie z
api.sejm.gov.pl. Twoje pytania nie trafiają ani do nas, ani do serwisu leniwyposel.pl.Tylko czyta dane Sejmu. Nie czyta Twoich plików i nie uruchamia programów.
Na dysku zapisuje wyłącznie pobrane druki, tekst z nich odczytany i wyniki odczytu maszynowego (OCR), żeby nie robić tego drugi raz. Leżą w katalogu podręcznym:
~/Library/Caches/sejm-mcp(macOS),~/.cache/sejm-mcp(Linux),%LOCALAPPDATA%\sejm-mcp\Cache(Windows); inny wskażesz zmiennąSEJM_MCP_SCHOWEK. Katalog zajmuje najwyżej ok. 500 MB: ponad to serwer kasuje najdawniej używane pliki. Można go w każdej chwili skasować.Odczyt maszynowy skanów (Tesseract z danymi języka polskiego) jest w paczce i działa bez sieci: plik druku nie wychodzi z Twojego komputera.
Bez kont, kluczy, reklam i telemetrii.
Szczegóły techniczne i zgłaszanie problemów: SECURITY.md.
Narzędzia
Asystent sam wybiera narzędzie do pytania. Lista dla ciekawych:
Narzędzie | Co robi |
| Szuka posła po nazwisku, klubie, okręgu |
| Dane posła i statystyka głosowań według Sejmu |
| Kluby i koła, ich skład |
| Komisje sejmowe, skład, komisje posła |
| Polsko-zagraniczne grupy parlamentarne |
| Kadencje Sejmu od 1991 roku |
| Posiedzenia Sejmu z datami: domyślnie 10 ostatnich i najbliższe, |
| Porządek obrad posiedzenia |
| Głosowania posiedzenia z wynikami; |
| Głosowania po temacie i dacie |
| Wynik, próg, kluby, głos posła |
| Głosy posła w jednym dniu |
| Interpelacje i zapytania z terminem odpowiedzi |
| Jedno pismo: terminy, odpowiedzi, treść |
| Projekty ustaw i uchwał po tytule |
| Etapy prac nad projektem |
| Projekty wniesione do Sejmu |
| Druk sejmowy z plikami |
| Pełny tekst druku strona po stronie, spis artykułów, skany i OCR za zgodą |
| Druki po tytule i dacie |
| Posiedzenia komisji |
| Kto zabierał głos danego dnia |
| Treść wystąpienia ze stenogramu |
| Nagrania posiedzeń |
| Akty prawne po tytule i roku |
| Czy akt obowiązuje, od kiedy, co go zmieniło |
| Tekst aktu albo artykułu w aktualnym brzmieniu |
| Słowniki bazy aktów prawnych |
| Inne dane z API Sejmu |
Licencja
Apache 2.0: możesz używać, zmieniać i rozpowszechniać sejm-mcp w dowolnym celu, także komercyjnym, pod warunkiem zachowania informacji o licencji i o autorach (plik NOTICE). Licencja obejmuje też udzielenie praw patentowych. Tworzy zespół Leniwego Posła.
Dane
Dane pochodzą z publicznych API Kancelarii Sejmu RP (api.sejm.gov.pl, także baza aktów prawnych ELI); projekt nie jest związany z Kancelarią Sejmu. Publikując coś na ich podstawie, podaj źródło, np. „Źródło: Kancelaria Sejmu RP, api.sejm.gov.pl”, najlepiej z adresem rekordu, który asystent dostaje przy każdej odpowiedzi.
sejm-mcp łączy się tylko z api.sejm.gov.pl. Wersja hostowana z leniwyposel.pl/dla-developerow może dodawać zestawienia Leniwego Posła; te udostępniamy na licencji CC BY 4.0, z podaniem źródła „Leniwy Poseł, leniwyposel.pl”.
Szybki start dla programistów
Trzy minuty do pierwszej odpowiedzi:
claude mcp add sejm -- npx -y sejm-mcp # Claude Code
npx -y @modelcontextprotocol/inspector npx -y sejm-mcp # podgląd narzędzi w przeglądarceTrzy pomysły na start (wklej jako prompt):
Tracker ustawy. „Znajdź projekt ustawy o … , pokaż etapy prac w Sejmie i streść, co zmienia art. 1. Przy każdym zdaniu podaj druk, plik i stronę.” (
szukaj_procesow,proces,tekst_druku)Głosowania posiedzenia w jednej tabeli. „Wypisz głosowania ostatniego posiedzenia Sejmu: temat, wynik, wymagana większość i jak głosowały kluby. Zwróć JSON do wykresu.” (
lista_posiedzen,glosowania_posiedzenia,glosowanie)Spóźnione odpowiedzi ministrów. „Które interpelacje do ministra … czekają na odpowiedź dłużej niż 21 dni od doręczenia? Podaj numery i linki.” (
szukaj_pism,pismo)
Każda odpowiedź niesie adres rekordu w api.sejm.gov.pl, więc Twoja aplikacja może linkować do źródła. Pamiętaj o granicach z CONTRIBUTING.md: fakty z rejestru, bez rankingów i ocen posłów.
Kontakt
Błąd w odpowiedzi albo pomysł: zgłoszenie na GitHubie.
Poprawka w kodzie: pull request, najpierw CONTRIBUTING.md.
Współpraca i media: leniwyposel.pl/kontakt.
Zgłoszenia i pull requesty są mile widziane; zasady w CONTRIBUTING.md.
Zdjęcie w nagłówku: Piotr VaGla Waglowski, domena publiczna.
English
sejm-mcp is a Model Context Protocol (MCP) server for the public APIs of the Polish
parliament (Sejm) and the Polish legal acts database (ELI): MPs, clubs, committees, votes,
interpellations and written questions, legislative processes, prints (full text page by page,
with optional local OCR of scans), sittings, transcripts and laws in force. It runs on your
machine, only reads, and talks to nothing but api.sejm.gov.pl. No accounts, keys or telemetry.
Tool names and answers are in Polish; ask in any language.
Install
Requires Node.js 22+ (except Claude Desktop, which ships its own).
Run it:
npx -y sejm-mcp(stdio; normally your MCP client starts it for you).Claude Desktop: download
sejm-mcp.mcpband double-click it, or add this toclaude_desktop_config.json:{ "mcpServers": { "sejm": { "command": "npx", "args": ["-y", "sejm-mcp"] } } }Claude Code:
claude mcp add sejm -- npx -y sejm-mcp(add--scope userfor all projects).Cursor, VS Code, Windsurf and others: the same
command/argsentry (see the Polish sections above for exact file paths).
When the Sejm API is down, this server is down too. You can then use the hosted version, which answers from a nightly copy of the database: https://mcp.leniwyposel.pl/mcp
Figures about MPs (e.g. absences) come straight from the Sejm's own statistics and may differ from the figures on leniwyposel.pl, which applies its own rules described at https://leniwyposel.pl/faq/#inne-niz-w-sejmie (quorum calls, mandate windows).
Disk and consent: prints up to 20 MB are downloaded without asking. The Sejm usually does not
announce the size, so the server counts bytes while downloading; past 20 MB it stops and asks
you first, saying why. Downloaded prints, their extracted text and OCR results are cached in your
user cache folder (~/Library/Caches/sejm-mcp, ~/.cache/sejm-mcp, %LOCALAPPDATA%\sejm-mcp\Cache
or SEJM_MCP_SCHOWEK), at most about 500 MB, least recently used files removed first. OCR of more
than 10 pages at once also asks first. A single answer is capped at 28,000 characters; a longer
one is shortened and says how to get the rest.
Quick start for developers
claude mcp add sejm -- npx -y sejm-mcp
npx -y @modelcontextprotocol/inspector npx -y sejm-mcp # browse the tools in your browserThree starter prompts:
Bill tracker: "Find the bill on …, list its stages in the Sejm and summarise what Article 1 changes, citing print number, file and page for every claim."
Sitting at a glance: "List the votes of the latest Sejm sitting with topic, result, required majority and how each club voted; return JSON for a chart."
Late ministerial answers: "Which interpellations to the Minister of … have waited more than 21 days since delivery? Give numbers and links."
Tools
The 29 tool names are Polish (table above). Two of them take options worth knowing:
lista_posiedzen (sittings) returns the 10 latest sittings plus the next one by default;
wszystkie: true returns the whole term and od/do a date range. glosowania_posiedzenia
(votes of a sitting) with porzadek: true groups the votes under the points of the sitting's
agenda, with the rest under „Pozostałe głosowania” (procedural motions, quorum checks); long
agendas continue with odPunktu. A quorum check where the Speaker asked MPs to press any
button is recorded by the Sejm like a vote (e.g. sitting 33, vote 5); the server knows the five
such cases, with transcript quotes, and reports them as quorum checks, not as passed motions.
Data and licence
Data comes from the public APIs of the Chancellery of the Sejm (api.sejm.gov.pl); this project is not affiliated with or endorsed by the Chancellery. Please credit it as "Source: Chancellery of the Sejm, api.sejm.gov.pl". Derived figures served by the hosted version from Leniwy Poseł are CC BY 4.0, credit "Leniwy Poseł, leniwyposel.pl".
Code: Apache 2.0; bundled third-party components (Tesseract OCR, tessdata, pdf.js) are listed in NOTICE. Security issues: report privately via SECURITY.md. Contributions: CONTRIBUTING.md and CODE_OF_CONDUCT.md. Issues and PRs in Polish or English are welcome.
Available Tools
29 toolsaktAkt prawny: status, wejście w życie, zmianyARead-onlyIdempotent
Jeden akt z bazy ELI: czy obowiązuje, od kiedy (wejście w życie), kiedy ogłoszony, kto wydał, słowa kluczowe, druki sejmowe i powiązania z innymi aktami (akty zmieniające, uchylające, wykonawcze, teksty jednolite, orzeczenia TK). Pole eli z narzędzia proces to właśnie adres dla tego narzędzia. Przy obwieszczeniu o tekście jednolitym stanPrawnyNa to dzień, według którego sporządzono tekst. Pole tekst dotyczy tylko tego aktu; format najnowszego tekstu jednolitego podaje najnowszyTekstJednolity.html. Liczbę powiązań każdego rodzaju masz w polu odpowiedz i powiazania[].liczba; nie pobieraj listy, żeby je policzyć. Aktualne brzmienie ustawy zmienianej wiele razy jest w najnowszym tekście jednolitym (pole najnowszyTekstJednolity) i w zmianach ogłoszonych po nim. Ostatnią nowelizację podaje ten akt z powiazania="Akty zmieniające", nie wyszukiwanie po tytule. Podpis prezydenta, weto i skierowanie do TK są w rejestrze procesów: pole drukiSejmowe[].proces podaj do narzędzia proces.
| Name | Required | Description | Default |
|---|---|---|---|
| adres | Yes | Adres aktu: wydawca/rok/pozycja, np. "DU/2026/62" (Dziennik Ustaw) albo "MP/2023/1261" (Monitor Polski). Dla aktów sprzed 2012 r. adres to rok/POZYCJA, nie numer dziennika (Dz.U. 1997 nr 78 poz. 483 → DU/1997/483); Konstytucja RP to DU/1997/483. Adresu nie zgaduj: bez pewności weź go z szukaj_aktow. | |
| powiazania | No | Rodzaj powiązań do przejrzenia porcjami z tytułami, np. "Akty zmieniające", "Akty uchylające", "Inf. o tekście jednolitym", "Orzeczenie TK", "Akty wykonawcze" (nazwa z pola powiazania; potoczne „nowelizacje”, „teksty jednolite” też zadziałają) | |
| powiazaniaLimit | No | Ile wyników najwyżej (domyślnie 30, max 50) | |
| powiazaniaPrzesuniecie | No | Od którego wyniku zacząć (stronicowanie) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely useful behavior: relations come back in titled chunks, per-kind counts are available in odpowiedz and powiazania[].liczba so no list fetch is needed to count them, and stanPrawnyNa is the date the consolidated text was prepared. It does not describe output shape beyond that, which is acceptable given an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded in the opening sentences and the density is high with little filler. It is long and repeats some parameter examples already in the schema, which keeps it from a 5, but each sentence carries an operational instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, one-required read tool with a full output schema and rich annotations, the definition covers addressing (don't guess), pagination via powiazaniaLimit/Przesuniecie, count access, consolidated-text semantics, and cross-tool handoff to proces. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description goes beyond it: it warns that adres must come from szukaj_aktow rather than being guessed, explains that kolokwial terms like 'nowelizacje' work for powiazania, and clarifies that tekst concerns only this act while najnowszyTekstJednolity.html gives the latest consolidated format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (one legal act from the ELI database) and enumerates the exact content returned: legal status, entry-into-force date, promulgation, issuer, keywords, parliamentary prints, and typed relations to other acts. It differentiates from proces and szukaj_aktow, but does not explicitly contrast with tresc_aktu, the closest sibling for full act text, so it falls short of a clean 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules are given: the eli field from proces is the address for this tool, addresses must not be guessed but taken from szukaj_aktow, and drukiSejmowe[].proces should be forwarded to proces for presidential signature/veto/TK referrals. It also directs the agent to use this act's 'Akty zmieniające' relation for the latest amendment rather than a title search, naming the alternative approach to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drukDruk sejmowyARead-onlyIdempotent
Jeden druk sejmowy: tytuł, daty, powiązane procesy, adresy plików (PDF, DOCX) i druki dodatkowe (drukiDodatkowe, np. 2874-001 „ocena skutków regulacji”, opinie) z datami doręczenia i plikami. Daty: dataDokumentu to dzień sporządzenia dokumentu przez autora (NIE dzień wpływu do Sejmu); doreczono to dzień doręczenia druku posłom. Na pytanie „kiedy wpłynął do Sejmu” nie podawaj dataDokumentu: rejestr zapisuje wpływ jako etap procesu „Projekt wpłynął do Sejmu” (pole wszczeto w narzędziu proces), a przy sprawach przeniesionych z poprzedniej kadencji wpływ, sporządzenie i doręczenie potrafią dzielić lata (druk 164: dokument 24.03.2022, wpływ 25.03.2022, doręczenie 16.01.2024); wtedy podaj, która to data.
| Name | Required | Description | Default |
|---|---|---|---|
| numer | Yes | Numer druku, np. "1", "1234-A" albo "2874-001" | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/destructive-free, so the bar is lower, yet the description adds substantial semantics: the distinction between dataDokumentu (authoring date) and doreczono (delivery to MPs), plus the cross-cadence caveat with a concrete example (druk 164). It does not discuss pagination or error behavior for an unknown numer, keeping it shy of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded first clause states the resource and payload efficiently; the date-semantics guidance is dense and useful. The historical example (druk 164 with three dates) is long but earns its place as disambiguation, so only slight verbosity cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record lookup with annotations covering safety and an output schema covering return shape, the description supplies the one thing that cannot be inferred — the meaning and interrelation of the date fields and where the true 'influence' date lives. Nothing an agent needs to answer correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema (numer format, kadencja default/min/max). The description adds no syntax or defaulting detail for either parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states precisely that the tool returns a single Sejm print ('Jeden druk sejmowy') and enumerates the payload — title, dates, related processes, file addresses, and附加 druki. The singular scope implicitly separates it from the sibling search tool szukaj_drukow, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It directly instructs how to answer the common question 'when did it reach the Sejm' — do not use dataDokumentu, use the proces tool's wszczeto field — and warns that across cadences the dates can diverge by years, telling the agent to report which date applies. It names the alternative tool (proces) and the condition selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
glosowania_posiedzeniaGłosowania na posiedzeniuARead-onlyIdempotent
Głosowania jednego posiedzenia (lub jednego jego dnia) z werdyktem liczonym z progu, plus bilans: ile przyjęto, ile odrzucono, ile było apeli o kworum i wyborów z listy. Na pytanie „ile głosowań / ile przyjęto na posiedzeniu” wołaj BEZ parametru data (np. z limit 1): bilans obejmuje wtedy całe posiedzenie; nie sumuj bilansów dziennych. Lista idzie porcjami (domyślnie i najwyżej 30; przy bardzo długich tytułach porcja kurczy się, żeby wynik nie przekroczył ok. 20 tys. znaków): resztę pobierasz z przesuniecie RÓWNYM nastepnePrzesuniecie, nie przesuniecie+limit. Bez kadencji, z datą spoza bieżącej kadencji, kadencję wyznacza data. Z porzadek=true zamiast listy po kolei: porządek obrad z głosowaniami pod każdym punktem (każde głosowanie z werdyktem, punkty bez głosowań też), a na końcu „Pozostałe głosowania” (wnioski formalne, apele o kworum, głosowania bez numeru punktu). Szczegóły i rozbicie na kluby daje narzędzie glosowanie.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Tylko głosowania z tego dnia posiedzenia (RRRR-MM-DD) | |
| limit | No | Ile wyników najwyżej (domyślnie 30, max 30) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| odPunktu | No | Z porzadek=true: głosowania od tego punktu porządku (dalsza porcja długiego porządku) | |
| porzadek | No | Porządek obrad z głosowaniami pod punktami (zamiast listy po kolei); limit i przesuniecie wtedy nie działają | |
| posiedzenie | Yes | Numer posiedzenia | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, and the description adds substantial behavior beyond them: batched pagination (default and max 30, shrinking for long titles to stay under ~20k chars), the non-obvious rule that the next page uses przesuniecie equal to nastepnePrzesuniecie rather than przesuniecie+limit, term inference from an out-of-term date, and how porzadek restructures output (with a 'Pozostałe głosowania' bucket). This is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and its output shape before the usage rules, and every sentence carries operational information (pagination, mode switching, sibling routing). It is dense and would read better with light structuring, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained; the description covers the remaining decision points — which mode, whether to pass data, how to page, how the term is resolved, and which sibling handles detail. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning the schema does not: that omitting data yields a whole-sitting tally, that limit=1 is the idiom for aggregate questions, and the precise offset-chaining rule for przesuniecie. It leaves minor gaps (e.g. odPunktu is only lightly covered) but clearly exceeds the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns the votes (głosowania) of one sitting or one day, including threshold-derived verdicts and a tally of adopted/rejected/quorum-appeal/election votes. It explicitly routes detail/club-breakdown requests to the sibling tool glosowanie, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules: call WITHOUT the data parameter (e.g. limit=1) for 'how many / how many adopted at this sitting' questions because the tally then covers the whole sitting, and do not sum daily tallies. It also names porzadek=true as the alternative mode and points to glosowanie for details — clear conditions with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
glosowanieGłosowanie: wynik, kluby, głos posłaARead-onlyIdempotent
Jedno głosowanie ze szczegółami: werdykt z progu, wymagana większość, rozbicie na kluby według przynależności Z DNIA GŁOSOWANIA, opcjonalnie głos jednego posła i lista imienna (cała izba zgrupowana: głos → klub → posłowie; wiersz po wierszu dla jednego klubu z parametrem klub). Przy wyborze z listy kluby[] mają kartOddanych i nieobecni. Przy wyborze z listy zwraca kandydatów i liczbę głosów. Przy poprawce Senatu Sejm głosuje wniosek o jej ODRZUCENIE (bezwzględna większość): gdy wniosek nie przejdzie, poprawka jest PRZYJĘTA, a głos „przeciw” to głos za poprawką (pole rozstrzygniecie). Jak poseł głosował w serii głosowań jednego dnia (np. nad wszystkimi poprawkami Senatu): glosy_posla_w_dniu, jedno wywołanie zamiast wielu.
| Name | Required | Description | Default |
|---|---|---|---|
| klub | No | Lista imienna tylko tego klubu (skrót z dnia głosowania, np. "PiS") | |
| numer | Yes | Numer głosowania na posiedzeniu | |
| poselId | No | Pokaż, jak głosował ten poseł, albo kilku posłów naraz (np. imienników: [147, 148]). Jeśli znajdz_posla zwrócił niejednoznaczne, przekaż tablicę wszystkich pasujących id. | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | Yes | ||
| listaImienna | No | Dołącz głos każdego posła |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/no-destructive, and the description adds substantial domain behavior: club breakdown uses membership ON THE VOTING DAY, kluby[] carry kartOddanych and nieobecni, and crucially the Senate-amendment trap where 'against' means for the amendment and the rozstrzygniecie field disambiguates it. This is real value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, with the core output shape stated first and the semantic edge case (Senate amendment) and the sibling routing sentences following logically. Every sentence carries information, though the density of Polish clauses makes it heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a complex read tool: with an output schema and annotations already covering the safety profile, the description still surfaces the non-obvious vote-interpretation rule and the club-field semantics an agent needs to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 83% schema coverage the schema already documents most parameters, but the description adds meaning: klub yields the roll-call row-by-row for one club, poselId shows how one or several MPs voted, and listaImienna attaches every MP's vote. It complements rather than merely repeats the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (single vote with details) and enumerates what it returns: verdict from threshold, required majority, club breakdown, optional MP vote, and roll-call list. It distinguishes itself from the sibling glosy_posla_w_dniu by naming it and its use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the agent explicitly: for a series of votes on one day (e.g. all Senate amendments) it points to glosy_posla_w_dniu as 'one call instead of many'. It also clarifies the optional poselId/listaImienna usage. No explicit when-not-to-use beyond that single alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
glosy_posla_w_dniuJak głosował poseł danego dniaARead-onlyIdempotent
Wszystkie głosy jednego posła w jednym dniu posiedzenia, z tematem, punktem porządku obrad i rozstrzygnięciem przy poprawkach Senatu i wecie. Jak poseł głosował w serii głosowań jednego dnia (np. nad wszystkimi poprawkami Senatu): to narzędzie, jedno wywołanie, a nie glosowanie po kolei. Dni posiedzeń daje lista_posiedzen albo profil_posla z dni=true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numer posła | |
| data | Yes | Dzień posiedzenia (RRRR-MM-DD) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), lowering the bar. The description usefully adds the aggregation behavior ('jedno wywołanie, a nie glosowanie po kolei'), but the rest of its content (topic, agenda item, Senate amendment/veto outcome) is return-content detail that the output schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences lead with the core purpose and then the routing/alternative information; nothing is wasted and the most important claim is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema and full annotations, the description only needs to frame purpose and routing, which it does. The only gap is the undocumented 'posiedzenie' parameter, which is minor given the schema and the defaulted 'kadencja'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (75%), so the schema carries most parameter meaning; the description adds no parameter-level detail (formats, ranges, or what 'posiedzenie' means, which is the one undocumented field). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope: 'Wszystkie głosy jednego posła w jednym dniu posiedzenia'. It also distinguishes itself from the per-vote alternative ('to narzędzie, jedno wywołanie, a nie glosowanie po kolei'), so an agent can separate it from glosowanie/glosowania_posiedzenia without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('Jak poseł głosował w serii głosowań jednego dnia, np. nad wszystkimi poprawkami Senatu') and names the alternative sources for the required date (lista_posiedzen, profil_posla z dni=true). It stops short of stating when NOT to use it (e.g. multi-day or multi-MP queries), so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grupy_bilateralneParlamentarne grupy bilateralneARead-onlyIdempotent
Polsko-zagraniczne grupy parlamentarne (np. Polsko-Ukraińska): lista z wyszukiwaniem po nazwie albo jedna grupa z członkami (posłowie i senatorowie).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numer grupy z listy | |
| fraza | No | Część nazwy, np. "Ukraińska" | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| dawniCzlonkowie | No | Przy id: dołącz osoby, których członkostwo albo mandat wygasł |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds what the entity is and that member records include both deputies and senators, but discloses nothing further about permissions, rate limits, or result size. With annotations carrying the burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly packed sentence that front-loads the resource and the example, then states both retrieval modes. No wasted words, though the parenthetical example and dual-mode clause make it slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema present, the description need not explain return values. It captures the entity, the search field, and the member-inclusive mode, leaving little an agent would need beyond structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (id, fraza, kadencja, dawniCzlonkowie) is already documented in the schema. The description adds only a light gloss (search by name, members on lookup) that maps to those fields, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Polish-foreign parliamentary groups) with a concrete example, and clearly distinguishes its two operating modes: a searchable list vs a single group with its members (deputies and senators). It does not, however, differentiate itself from any sibling tool, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the two modes (list-with-name-search vs one-group-with-members) hint at how parameters select behavior, but there is no explicit when-to-use/when-not guidance and no named alternative among the many sibling tools for parliamentary data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kadencjeKadencje SejmuARead-onlyIdempotent
Wszystkie kadencje Sejmu RP od 1991 roku: numer, daty początku i końca, która trwa, ile druków. Przydaje się, gdy pytanie dotyczy dawnych lat.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, openWorld), so the burden is light. The description adds useful scope context (coverage begins 1991, flags the currently active term), but discloses nothing about volume, caching, or refresh behavior beyond what annotations and the output schema cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: content scope is front-loaded, then a single usage clause. No filler, though the closing usage sentence is slightly imprecise ('dawnych lat') relative to the stated 1991 coverage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with an output schema and full safety annotations, the description supplies adequate scope and content framing, so an agent can decide when to call it. Only the absence of explicit alternative-routing guidance keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema-side baseline is 4. The description still lists the fields returned (numer, dates, current flag, druki count), which adds orientation value even though parameters themselves need no explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (kadencje Sejmu RP) and enumerates exactly what each entry contains: number, start/end dates, which term is current, and paper count. This level of content detail clearly separates it from data-heavy siblings like druk or glosowanie, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a when-to-use hint: 'Przydaje się, gdy pytanie dotyczy dawnych lat' (useful when the question concerns earlier years). However, it names no sibling tool and gives no exclusions or conditions that would route the agent between this and other reference tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
klubyKluby i koła poselskieARead-onlyIdempotent
Bez parametru: kluby i koła w Sejmie danej kadencji z liczbą członków (stan na dziś) i rodzajem (klub, koło, niezrzeszeni). Z parametrem klub: jeden klub z pełną nazwą, kontaktem, logo i dzisiejszym składem z funkcjami (przewodniczący, wiceprzewodniczący, sekretarz…) i datą wejścia każdego posła do klubu. Skrót potoczny („PSL”) albo część nazwy dopasowuje do skrótu z rejestru („PSL-TD”), gdy jest jednoznaczny. Bez parametru klub także ostatnie wejścia posłów do klubów (pole ostatnieZmiany: kto, do którego klubu, od kiedy), czyli „kto ostatnio zmienił klub”.
| Name | Required | Description | Default |
|---|---|---|---|
| klub | No | Skrót klubu z listy, np. "KO", "PiS", "Konfederacja_KP"; można też początek skrótu albo część nazwy | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real behavioral context beyond them: data is 'as of today', the fuzzy-match fallback (colloquial abbreviation or partial name resolved to the registry abbreviation only when unambiguous), and that last-changes are included by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the no-parameter case first, then the parameter case, then the extra last-changes payload. Dense but each sentence carries distinct information; only minor redundancy in the closing restatement of what the no-parameter mode adds.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape detail is unnecessary, and the description still covers both invocation modes, matching behavior, and a default payload. Complete enough for a 2-param read tool; only the absence of any comparison to related tools (e.g. komisje) leaves a sliver of ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description meaningfully extends it: it explains the matching semantics for 'klub' (colloquial shorthand like "PSL" resolved to "PSL-TD" when unambiguous) rather than just repeating the schema's example values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (kluby i koła w Sejmie danej kadencji) with concrete output fields, and clearly describes the two modes: no parameter returns the roster with member counts and type; with 'klub' returns one club with name, contact, logo, composition and entry dates. An agent can distinguish this from komisje or grupy_bilateralne without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly splits behavior by presence/absence of the 'klub' parameter, telling the agent what each mode yields and that the no-parameter mode also returns recent club-switching. It does not name sibling tools or state when another tool would be preferable, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komisjeKomisje sejmowe i ich składARead-onlyIdempotent
Bez parametrów: wszystkie komisje kadencji (kod, nazwa, rodzaj: stała, nadzwyczajna, śledcza). Z kodem: jedna komisja z zakresem działania i obecnym składem (przewodniczący, zastępcy, członkowie z klubami), datą powołania i podkomisjami (nazwa, stała czy nadzwyczajna, data rozwiązania). Kod podkomisji (np. "INF01N", "ASW02S") daje jedną podkomisję: nazwę, komisję macierzystą, daty powołania i rozwiązania, skład. Z poselId: w jakich komisjach zasiada poseł i z jaką funkcją. Posiedzenia komisji daje posiedzenia_komisji.
| Name | Required | Description | Default |
|---|---|---|---|
| kod | No | Kod komisji, np. "ZDR" (Zdrowia), "FPB" (Finansów Publicznych), albo podkomisji, np. "INF01N" | |
| poselId | No | Numer posła: pokaż jego komisje | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| dawniCzlonkowie | No | Przy kodzie: dołącz członków, którzy odeszli z komisji |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
PLACEHOLDER
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well structured: each clause maps to a distinct parameter mode, and the sibling redirection comes last. It is longer than a single-sentence tool but nearly every phrase carries information; only the enumeration of returned fields borders on redundancy given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all four call modes and routes to the sittings sibling, and an output schema exists so return shapes need not be spelled out. The only minor gap is the behavior of dawniCzlonkowie (include departed members), which is left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds genuine value by explaining the branching semantics — that 'kod' resolves to either a committee or a subcommittee depending on the pattern, and that poselId switches the response to an MP-centric view. This is more than the schema's per-parameter strings convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (sejm committees and their composition) and enumerates exactly what each mode returns (kod/nazwa/rodzaj, membership, subcommittees, MP assignments). It explicitly differentiates itself from the sibling 'posiedzenia_komisji', which handles sittings rather than committee composition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing for four distinct call shapes: no params for all committees, kod for one committee, a subcommittee kod for one subcommittee, and poselId for an MP's memberships. It also names the sibling tool to use for sittings, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lista_posiedzenPosiedzenia SejmuARead-onlyIdempotent
Posiedzenia Sejmu danej kadencji: numer, daty, stan (zakończone, trwa, zaplanowane) i liczba głosowań w każdym dniu. Podaje też numer ostatniego zakończonego posiedzenia. Bez od/do lista ma 10 ostatnich posiedzeń i najbliższe (sumy w polu sumy dalej obejmują całą kadencję); całą kadencję daje wszystkie=true, a konkretny okres od/do. Porządek obrad z głosowaniami pod każdym punktem: glosowania_posiedzenia z porzadek=true.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Tylko posiedzenia z dniami do tej daty | |
| od | No | Tylko posiedzenia z dniami od tej daty | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| planowane | No | Dołącz posiedzenia zaplanowane, jeszcze bez numeru | |
| wszystkie | No | Bez od/do: wszystkie posiedzenia kadencji (ok. 11 tys. znaków). Domyślnie 10 ostatnich i najbliższe |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuine behavior beyond that: the default result window, the caveat that sumy still aggregate over the whole term, an output-size hint (~11 tys. znaków), and that planowane adds not-yet-numbered sittings. It stops short of describing ordering or pagination details, so it is not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most important points (what is returned, default window, alternatives, cross-reference) are front-loaded in a compact paragraph with no filler. It is dense and information-rich, though the parenthetical about sumy mid-sentence slightly taxes readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value documentation is not required, and the description covers defaults, alternatives, aggregation caveat and a cross-tool handoff. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds interaction semantics not present in the schema: it clarifies how wszystkie relates to od/do (whole term vs. specific period) and that default filtering does not narrow the sumy aggregates. That is meaningful parameter behavior beyond field-level docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (listing Sejm sittings of a given term) and enumerates the returned fields: numer, daty, stan, liczba głosowań oraz numer ostatniego zakończonego posiedzenia. It is clearly distinguishable from siblings like porzadek_posiedzenia and glosowania_posiedzenia, which it explicitly cross-references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing: no od/do yields the 10 most recent plus upcoming sittings, wszystkie=true yields the whole term, od/do selects a specific period, and agenda-with-votes is delegated to glosowania_posiedzenia with porzadek=true. Both the default and the alternatives are spelled out rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pismoInterpelacja lub zapytanie: szczegóły i treśćARead-onlyIdempotent
Jedno pismo: adresaci z terminem i stanem każdego, odpowiedzi z adresem PDF, a na życzenie treść pisma lub odpowiedzi jako zwykły tekst (w porcjach). Przy kilku adresatach podaje, czyja jest odpowiedź (z podpisu albo jako oznaczony wniosek) i co wynika z samej liczby odpowiedzi. Odpowiedź, której treść jest tylko w załączniku PDF (tak jest prawie zawsze), serwer czyta z PDF po podaniu odpowiedzKlucz; skanu bez warstwy tekstowej nie odczyta i wtedy podaje adres PDF. Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| od | No | Od którego znaku treści zacząć (dla długich tekstów) | |
| numer | Yes | ||
| tresc | No | Dołącz treść samego pisma | |
| rodzaj | Yes | interpelacja = /interpellations, zapytanie = zapytanie pisemne /writtenQuestions | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| odpowiedzKlucz | No | Klucz odpowiedzi (pole klucz z listy odpowiedzi): dołącz jej treść |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/non-destructive, so safety is covered, and the description layers on genuinely useful behavior: the server extracts text from PDF only after odpowiedzKlucz is given, cannot read scans lacking a text layer, and returns wynikCzesciowy on timeout/Sejm failure/limit. These are real operational caveats beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph; the key framing 'Jedno pismo' is front-loaded, and the partial-result handling sentence earns its place, but the middle clauses about addressee attribution and signed-vs-motion answers are verbose and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description covers the important edge cases (PDF-only answers, unreadable scans, partial results). It is essentially complete for an agent to call it correctly, missing only explicit sibling guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 83%, so the baseline is 3, but the description adds meaning: odpowiedzKlucz triggers server-side PDF reading, and the 'w porcjach' phrasing connects to the 'od' offset parameter for chunked long text. It does not cover every field (numer, kadencja) but meaningfully explains the non-obvious ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with 'Jedno pismo' (a single letter) and enumerates what is returned: adresaci with deadline and status, answers with PDF addresses, and optional plain-text content. This is a specific verb+resource framing that separates it from the sibling search tool szukaj_pism, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to pass odpowiedzKlucz (to pull the answer body) and instructs the agent to surface partial results ('powiedz to użytkownikowi na początku odpowiedzi'), but it offers no explicit when-not-to-use and does not route the agent to alternative tools like szukaj_pism or druk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
porzadek_posiedzeniaPorządek obrad posiedzenia SejmuARead-onlyIdempotent
Porządek obrad posiedzenia Sejmu jako tekst: bez numeru bieżące albo najbliższe posiedzenie („czym Sejm zajmie się na najbliższym posiedzeniu”), z numerem dowolne posiedzenie kadencji (dla zakończonych to porządek zrealizowany).
| Name | Required | Description | Default |
|---|---|---|---|
| od | No | Od którego znaku zacząć (długie porządki) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | No | Numer posiedzenia; bez numeru: bieżące albo najbliższe |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adnotacje pokrywają profil bezpieczeństwa (readOnlyHint, idempotentHint, destructiveHint=false), więc opis nie musi tego powtarzać. Wnosi jednak istotny kontekst zachowaniowy poza adnotacjami: semantykę braku numeru posiedzenia (bieżące/najbliższe) oraz to, że dla posiedzeń zakończonych zwracany jest porządek zrealizowany, co wpływa na interpretację wyniku. Brakuje informacji o ewentualnej paginacji mimo parametru od.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Zwięzłe, jednoliniowe zdanie z front-loadingiem najważniejszej informacji (co to jest i jak traktować brak numeru). Każdy fragment zdania wnosi konkretną informację. Mimo to konstrukcja z nawiasami i wieloma myślnikami może utrudniać szybkie skanowanie.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Biorąc pod uwagę, że istnieje output schema (opis nie musi wyjaśniać zwracanych wartości), adnotacje pokrywają bezpieczeństwo, a schemat opisuje parametry, opis uzupełnia kluczowe luki: semantykę trybu bez numeru oraz zachowanie dla posiedzeń zakończonych. Wystarczająco kompletny dla agenta, by poprawnie wywołać narzędzie, choć brak wskazania relacji z sąsiednimi narzędziami pozostawia niewielką niepewność.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema ma 100% pokrycia opisami (od, kadencja, posiedzenie), więc zgodnie z regułą bazą jest 3. Opis dodaje jedynie znaczenie braku parametru posiedzenie (bieżące/najbliższe), co jest już częściowo odzwierciedlone w schemacie, ale nie wnosi nowych szczegółów formatu, zakresu wartości ani interakcji między kadencją a posiedzeniem.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Precyzyjnie określa czasownik+zasób (porządek obrad posiedzenia Sejmu jako tekst) i natychmiast rozróżnia tryby działania: bez numeru (bieżące/najbliższe) vs z numerem (dowolne posiedzenie kadencji). W kontekście licznego rodzeństwa z rodziny posiedzeń (lista_posiedzen, glosowania_posiedzenia, wypowiedzi_posiedzenia) wyraźnie wskazuje na unikalny zwrot tekstowy porządku obrad, a nie metadane czy głosowania.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Jasno opisuje warunki użycia: bez numeru posiedzenia dla bieżącego/najbliższego, z numerem dla dowolnego posiedzenia kadencji, z doprecyzowaniem że dla zakończonych to porządek zrealizowany. Nie wymienia jednak wprost alternatyw (np. lista_posiedzen do metadanych lub wypowiedzi_posiedzenia do treści), więc agent musi sam wywnioskować, kiedy sięgnąć po to narzędzie zamiast sąsiednich.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
posiedzenia_komisjiPosiedzenia komisji sejmowychARead-onlyIdempotent
Posiedzenia komisji: (1) z parametrem data (bez kodu) wszystkie komisje jednego dnia albo przedziału do 7 dni; (2) z kodem komisji wszystkie jej posiedzenia w kadencji, od najnowszych, zawężane datami od/do (albo data/do), razem ze wspólnymi z innymi komisjami; (3) z kodem i numerem jedno posiedzenie z pełnym porządkiem. Na pytanie „ile posiedzeń odbyła komisja X w miesiącu” użyj (2) z od/do i podaj pole razem: to liczba posiedzeń (osobnych numerów), a nie dni; dwa posiedzenia tego samego dnia to dwa posiedzenia. Każde posiedzenie ma godziny, salę, porządek obrad, link do transmisji i do zapisu przebiegu (PDF). Kody komisji daje narzędzie komisje (np. "ZDR" zdrowia, "FPB" finansów publicznych, "ASW" administracji i spraw wewnętrznych). Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Ostatni dzień przedziału, włącznie (z data bez kodu komisji: najwyżej 6 dni po data) | |
| od | No | Z kodem komisji: posiedzenia od tego dnia, włącznie | |
| data | No | Dzień (RRRR-MM-DD), a z parametrem do: pierwszy dzień przedziału | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 40) | |
| numer | No | Z kodem komisji: numer posiedzenia | |
| komisja | No | Kod komisji, np. "ZDR" | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses newest-first ordering, that joint meetings with other committees are included, the 7-day window cap, and a partial-result failure mode signalled by the wynikCzesciowy field with an instruction to warn the user first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph with the three modes front-loaded and no filler; every clause carries operational meaning. It would read better broken into bullets, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with an output schema, the description covers the mode logic, the code dependency on a sibling tool, pagination/limit behavior, and the degraded-result case — an agent has everything needed to call it and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so individual parameter meaning is already carried by the schema and baseline would be 3. The description adds real cross-parameter semantics the schema does not state — how data/do/od interact across the three modes and that 'razem' is a count of meeting numbers rather than days.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (committee meetings) and enumerates three distinct invocation modes keyed on which parameters are supplied. An agent can tell exactly what each mode returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes mode selection (data-only vs. code vs. code+numer), names the sibling tool 'komisje' as the source of committee codes, and even maps a concrete user question ('ile posiedzeń...') to mode (2) with a stated interpretation rule for the count.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
procesProces legislacyjny: etapyARead-onlyIdempotent
Jeden proces legislacyjny z pełną listą etapów w kolejności rejestru: skierowania, czytania, sprawozdania komisji (wniosekKomisji, wnioskiMniejszosci), głosowania z wynikiem, stanowisko Senatu (czy wniósł poprawki), autopoprawki (inneDokumenty), a po Sejmie etapy Prezydenta: podpis, weto, skierowanie do Trybunału Konstytucyjnego (pola podpisPrezydenta, weto, trybunal i etapy). Pole glosowanieKoncowe to głosowanie nad całością projektu (posiedzenie, numer): podaj je do narzędzia glosowanie z poselId, żeby sprawdzić głos posła. Pole eli (np. DU/2026/62) to adres opublikowanego aktu dla narzędzia akt (czy obowiązuje, od kiedy); dataOgloszenia to dzień ogłoszenia w dzienniku. Numer procesu to zwykle numer druku, który go rozpoczął.
| Name | Required | Description | Default |
|---|---|---|---|
| numer | Yes | Numer procesu, np. "1" albo "125" | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and idempotency profile is fully covered. The description adds useful cross-tool data-flow context (how glosowanieKoncowe and eli connect to sibling tools) but does not disclose return format, error behavior, or pagination limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single long sentence packed with field-level explanations, which front-loads the main content but becomes dense and difficult to parse. While every clause contains useful information, the lack of sentence breaks and broad length reduce readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description needn't explain return values, and it appropriately focuses on how to use key returned fields (glosowanieKoncowe, eli, dataOgloszenia) with related tools. It is nearly complete for an agent's needs, with minor gaps around default kadencja behavior already covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (numer, kadencja) are already documented. The description adds non-obvious meaning: 'Numer procesu to zwykle numer druku, który go rozpoczął' is a genuinely useful interpretation of the numer field that the schema description only illustrates with a generic example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a single legislative process with its full ordered list of stages, naming the specific stage categories and fields returned. It is distinguishable from search tools like szukaj_procesow, though that differentiation is achieved through the detailed content listing rather than an explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete, actionable guidance for using related tools: pass glosowanieKoncowe to glosowanie with poselId to check a deputy's vote, and use the eli field with akt to check the published act's status. It does not spell out when-not-to-use versus szukaj_procesow, but the usage context is clear for the primary retrieval scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profil_poslaProfil posłaARead-onlyIdempotent
Dane posła z rejestru: klub, okręg wyborczy, liczba głosów zdobytych w wyborach do Sejmu (glosowWWyborach), data i miejsce urodzenia, wykształcenie, zawód, data ślubowania, a przy wygasłym mandacie data i powód wygaśnięcia. Do tego statystyka głosowań według Sejmu (/MP/{id}/votings/stats): ile głosowań było, w ilu wziął udział, ile opuścił i ile z opuszczonych dni Sejm uznał za usprawiedliwione. To liczby Sejmu, nie nasze wyliczenie. Z parametrem dni=true dochodzi rozbicie na dni posiedzeń, z posiedzenia=true suma na każde posiedzenie, a z od/do (daty włącznie) suma statystyki za ten okres (pole zakres), np. rok 2025: od=2025-01-01, do=2025-12-31. Klub to przynależność DZIŚ; klub z konkretnego dnia daje glosowanie z poselId (pole klubWDniuGlosowania). Numer posła obowiązuje w jednej kadencji: w innej kadencji ten sam numer to inna osoba, więc szukaj posła w tej kadencji przez znajdz_posla.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Koniec okresu (włącznie) dla sumy w polu zakres | |
| id | Yes | Numer posła z znajdz_posla | |
| od | No | Początek okresu (włącznie) dla sumy w polu zakres | |
| dni | No | Dołącz statystykę dzień po dniu (najnowsze najpierw); z od/do tylko dni z zakresu | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenia | No | Dołącz sumę na każde posiedzenie (najnowsze najpierw); z od/do tylko dni z zakresu |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so safety is covered; the description adds real context beyond that: the statistics are the Sejm's own numbers rather than a local computation, klub reflects the current affiliation, and id semantics differ across terms. No return-format disclosure, but the output schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long, but every clause carries distinct information (payload fields, statistics semantics, flag behaviours, id/term caveat) and the primary payload is front-loaded. The parenthetical parameter syntax is slightly dense but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with an output schema documented separately, the description covers everything an agent needs: the identity/term caveat, all flag interactions, the date-range semantics, and the source of the statistics. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, yet the description goes further: it explains that dni=true adds a per-sitting-day breakdown, posiedzenia=true aggregates per sitting, and od/do are inclusive and populate the 'zakres' field, with a worked example (od=2025-01-01, do=2025-12-31).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource (poseł's registry record) and enumerates the payload: klub, okręg, głosy, dane biograficzne, ślubowanie, wygaśnięcie mandatu, plus voting statistics scoped to a Sejm term. It is clearly distinguishable from siblings like znajdz_posla (search) or glosy_posla_w_dniu (per-day votes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: numeric id is valid only within one kadencja, so an MP in another term must be located via znajdz_posla. It also warns that klub is today's affiliation and that a day-specific klub must come from glosowanie via poselId, which prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slownik_eliSłowniki bazy aktów prawnychARead-onlyIdempotent
Dopuszczalne wartości do wyszukiwania aktów: rodzaje aktów, statusy, instytucje, słowa kluczowe (ok. 2500), rodzaje powiązań, wydawcy z liczbą aktów; oraz podpowiedzi słów z tytułów (tytuly z frazą). Użyj, zanim podasz słowo kluczowe albo rodzaj do szukaj_aktow.
| Name | Required | Description | Default |
|---|---|---|---|
| fraza | No | Zawęź do pozycji zawierających frazę (przy tytuly: wymagana) | |
| slownik | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered by structured data. The description adds modest context – the ~2500 keyword volume, that 'wydawcy' includes act counts, and that 'tytuly' requires a phrase – but discloses nothing about response sizing, pagination, or auth that would matter for a ~2500-entry result set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A compact two-clause sentence that front-loads the returned vocabulary before the usage directive. No filler, though the enumerated list is dense and could be marginally tightened without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since an output schema exists, return-value format needn't be restated, and the description covers what the enum values mean plus the call ordering relative to szukaj_aktow. For a two-parameter read-only lookup this is essentially complete, with only the enumeration/response-size detail left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% and the enum parameter has no schema description, so the description carries real weight by mapping each enum value (rodzaje, statusy, instytucje, slowa_kluczowe, powiazania, wydawcy, tytuly) to its meaning. It also reinforces that 'tytuly' needs a fraza, which the schema notes but the description corroborates in context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (permissible lookup values for act searching) and enumerates exactly what it returns: act types, statuses, institutions, keywords (~2500), relation types, publishers, and title suggestions. This clearly differentiates it from the search sibling szukaj_aktow, so an agent knows it is a vocabulary/dictionary endpoint rather than a query endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Użyj, zanim podasz słowo kluczowe albo rodzaj do szukaj_aktow' – a clear trigger condition tied to the named sibling szukaj_aktow, which is the strongest form of routing guidance. There is no explicit 'when-not-to-use' statement, but the single-use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_aktowSzukaj aktów prawnych (Dziennik Ustaw, Monitor Polski)ARead-onlyIdempotent
Wyszukuje opublikowane akty prawne w bazie ELI Kancelarii Sejmu: ustawy, rozporządzenia, obwieszczenia, uchwały. Po słowach z tytułu (w przypadku zależnym, np. "o Krajowej Radzie Sądownictwa"; rdzeń też działa), słowach kluczowych, roku, rodzaju i tym, czy akt obowiązuje. O obowiązywaniu dziś mówi pole obowiazuje (statusWELI to surowy status ELI). Daty od/do są włączne. Ustawy idą przed obwieszczeniami o tekstach jednolitych. Adres z wyniku (np. DU/2019/914) podaj do narzędzia akt. Wyszukiwanie po tytule gubi nowelizacje zawarte w ustawach o innych tytułach (np. ustawa o finansach publicznych zmienia też ustawę o PIT). Liczbę i listę nowelizacji danej ustawy, także ostatnią, daje narzędzie akt z jej adresem i powiazania="Akty zmieniające" (pole ogloszono przy każdej pozycji i rozkład po latach ogłoszenia). Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Wydane do dnia (data aktu) | |
| od | No | Wydane od dnia (data aktu) | |
| rok | No | Rok publikacji (Dziennik Ustaw od 1918, Monitor Polski od 1918/1930) | |
| fraza | No | Słowa z tytułu aktu | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 50) | |
| rodzaj | No | Rodzaj aktu, np. "Ustawa", "Rozporządzenie", "Obwieszczenie" | |
| wydawca | No | DU = Dziennik Ustaw, MP = Monitor Polski | DU |
| wchodzaDo | No | Wchodzące w życie do dnia | |
| wchodzaOd | No | Wchodzące w życie od dnia | |
| ogloszoneDo | No | Ogłoszone w dzienniku do dnia | |
| ogloszoneOd | No | Ogłoszone w dzienniku od dnia | |
| zmienioneOd | No | Tylko akty, których opis w bazie ELI zmienił się od tego dnia (nowe akty, zmiana statusu); pomija pozostałe filtry poza wydawcą | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| slowaKluczowe | No | Słowa kluczowe ELI po przecinku, np. "budżet" albo "podatek dochodowy" | |
| tylkoObowiazujace | No | Tylko akty obowiązujące dziś |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so safety is covered; the description goes further by disclosing result ordering (ustawy before obwieszczenia), the inclusive date semantics, and a failure mode — partial results flagged by wynikCzesciowy with an instruction to inform the user first. That is substantive behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is searched, then qualifications, then chaining and caveats. Dense and every clause carries information, though the nowelizacje caveat is reiterated in two sentences and the text is longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter open search tool with an output schema, the description covers purpose, parameter nuances, result ordering, chaining to 'akt', and the partial-result failure mode. An agent has everything needed to call it correctly and to handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: fraza matches title words in the dependent grammatical case (rdzeń też działa), dates od/do are inclusive, and obowiazuje reflects today's force status while statusWELI is the raw ELI status. These clarifications go beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (wyszukuje) and resource (opublikowane akty prawne in the ELI base), enumerates the act categories searched (ustawy, rozporządzenia, obwieszczenia, uchwały), and names the qualifying facets. It clearly distinguishes itself from the sibling 'akt', which is for retrieving a single act by address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: search by title/words/year here, then pass the returned address (e.g. DU/2019/914) to 'akt'. It states the conditions where this tool is insufficient (title search misses nowelizacje) and names the exact alternative call (akt with powiazania="Akty zmieniające").
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_drukowSzukaj druków sejmowychARead-onlyIdempotent
Druki sejmowe kadencji (projekty, sprawozdania komisji, opinie, autopoprawki, informacje) po słowach z tytułu i dacie, od najnowszych. Daty od/do są włącznie i domyślnie dotyczą doręczenia posłom (wedlugDaty="doreczenia"); "dokumentu" filtruje po dacie sporządzenia. Fraza z numerem druku („autopoprawka 2865”) pokazuje druki związane z tym numerem. Druki dodatkowe (np. 2874-001) liczy razemDodatkowych, listę daje dodatkowe=true. Wynik mieści się w ok. 20 tys. znaków; resztę daje przesuniecie=nastepnePrzesuniecie. Szczegóły i pliki jednego druku daje druk, przebieg: proces.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Do dnia (włącznie) | |
| od | No | Od dnia (włącznie) | |
| fraza | No | Słowa z tytułu (każde musi wystąpić, bez względu na polskie znaki) | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 100) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| dodatkowe | No | true: wymień druki dodatkowe (np. 2874-001, ocena skutków regulacji) zamiast głównych, porcjami; domyślnie przy datach jest tylko ich liczba razemDodatkowych | |
| wedlugDaty | No | Po której dacie filtrować od/do: doręczenia posłom (domyślnie; tak liczy się „druki z tygodnia”) albo sporządzenia dokumentu | doreczenia |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description adds useful operational context beyond that: the result is capped at roughly 20k characters and the remainder is retrieved via paging, and that with dates only the count of additional prints is returned unless dodatkowe=true. This is genuine behavioral detail not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but front-loaded block: purpose and scope lead, then filtering nuances, then pagination, then sibling routing. Every clause carries information, though the middle section is fairly packed and could be split for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema present, the description need not explain return values, and it correctly focuses on filter semantics and routing. It covers the non-obvious behaviors (inclusive dates, additional-print handling, result-size paging) so an agent can call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 already applies, but the description goes further by explaining semantics the schema only labels: the doreczenia-vs-dokumentu date choice (including that it drives the 'week's prints' interpretation) and the number-phrase matching behavior of fraza. This meaningfully enriches what the enum and patterns convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource up front: searching parliamentary prints of a term by title words and date, enumerating the content types (projekty, sprawozdania, opinie, autopoprawki, informacje) and the sort order (od najnowszych). It also routes to siblings at the end (druk for details, proces for the legislative path), so an agent can distinguish it from szukaj_projektow or szukaj_pism.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance: dates are inclusive and default to delivery date ('doreczenia') while 'dokumentu' filters by drafting date; phrases with a print number (e.g. "autopoprawka 2865") surface related prints; additional prints are counted via razemDodatkowych or listed with dodatkowe=true. It names sibling tools for follow-up (druk, proces), though it does not frame explicit when-not-to-use conditions versus those siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_glosowanSzukaj głosowańARead-onlyIdempotent
Wyszukuje głosowania po słowie w tytule (wyszukiwarka rejestru Sejmu), opcjonalnie w przedziale dat lub na jednym posiedzeniu. Domyślnie najnowsze najpierw. Tytuły są w dopełniaczu i bez skrótów: szukaj "ustawy budżetowej na rok 2024", "Krajowej Radzie Sądownictwa", nie "budżetowa 2024" ani "KRS"; rdzeń słowa też działa ("budżet", "podatk"). Fraza z nazwiskiem posła (np. „Mejza immunitet”) szuka tego nazwiska w TYTUŁACH głosowań (wnioski o uchylenie immunitetu, sprawy z oskarżenia prywatnego); jak dany poseł głosował, daje glosowanie z poselId albo glosy_posla_w_dniu, nie to narzędzie. Pytanie „jak głosował poseł nad ustawą X”: szukaj tu po tytule ustawy i opisie „całość projektu”, albo przez szukaj_procesow → proces (pole glosowanieKoncowe); sprawdź, czy data, tytuł i druk zgadzają się z pytaniem, zanim wybierzesz głosowanie: kilka ustaw ma identyczny tytuł i różni się tylko numerem druku. Uwaga: ustawa „o zmianie ustawy budżetowej” albo „o szczególnych rozwiązaniach służących realizacji ustawy budżetowej” to INNE ustawy niż sama ustawa budżetowa. Pytanie o ustawę: bierz głosowanie z opisem „całość projektu ustawy”; „całość projektu uchwały” to uchwała, nie ustawa. Nazw potocznych („lex TVN”, „ustawa kagańcowa”, „nowelizacja”) nie ma w tytułach: szukaj przedmiotem ustawy („radiofonii i telewizji”) z datą od/do. Daty od/do z innej kadencji wybierają tę kadencję. Wynik mieści się w ok. 20 tys. znaków; resztę daje przesuniecie=nastepnePrzesuniecie. Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Do dnia (RRRR-MM-DD) | |
| od | No | Od dnia (RRRR-MM-DD) | |
| fraza | No | Słowo lub fraza z tytułu głosowania | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 50) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | No | ||
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| najnowszeNajpierw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, it discloses a concrete output-size cap (~20k znaków), the pagination mechanism (przesuniecie=nastepnePrzesuniecie), and a partial-result failure mode (wynikCzesciowy) with an instruction to tell the user. This is genuine behavioral context not derivable from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense single paragraph, but front-loaded with purpose and most sentences carry unique operational guidance (title-syntax rules, dispatch to siblings, partial-result handling). It is longer than ideal and unsegmented, which costs some scannability, but little is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description still flags the partial-result field that matters for user-facing behavior. Combined with title-matching rules and sibling routing, an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the description adds real semantics: how to phrase fraza (dopełniacz, no abbreviations, stem matching), that od/do from another kadencja select that kadencja, and that pagination uses przesuniecie. It does not explain posiedzenie or najnowszeNajpierw, but those are self-evident from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
First sentence states a specific verb (wyszukuje), resource (głosowania), and scope (po słowie w tytule, opcjonalnie daty/posiedzenie) plus default ordering. It also explicitly distinguishes itself from glosy_posla_w_dniu and glosowanie, so an agent can separate it from its closest siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: how to answer 'jak głosował poseł' (use glosowanie/glosy_posla_w_dniu instead), the alternative path via szukaj_procesow → proces (glosowanieKoncowe), and the rule to pick 'całość projektu ustawy' vs 'całość projektu uchwały'. It also states when-not (colloquial names absent from titles) with the workaround (search by subject + date range).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_pismSzukaj interpelacji i zapytańARead-onlyIdempotent
Wyszukuje interpelacje albo zapytania pisemne w rejestrze Sejmu: po autorze (numer posła), adresacie, słowie w tytule, dacie. Każde pismo dostaje stan liczony z terminu 21 dni (odpowiedziano, w terminie, po terminie, bez terminu) i listę adresatów, u których termin minął (poTerminieU). Z parametrem adresat stan i opóźnienie dotyczą TYLKO tego adresata, nie pozostałych. Na pytanie „które najbardziej się spóźniają” użyj sortuj="opoznienie"; domyślnie lista idzie od najnowszych pism. Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Wysłane do dnia | |
| od | No | Wysłane od dnia | |
| fraza | No | Słowa z tytułu, np. "szpital"; szukane po rdzeniach, więc „rezerwa ogólna” znajdzie „rezerwy … ogólnej” | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 100) | |
| rodzaj | Yes | interpelacja = /interpellations, zapytanie = zapytanie pisemne /writtenQuestions | |
| sortuj | No | opoznienie: najdłużej spóźnione najpierw | najnowsze |
| adresat | No | Pełna nazwa urzędu tak, jak w rejestrze, np. "minister zdrowia", "prezes Rady Ministrów" | |
| autorId | No | Numer posła-autora (z znajdz_posla) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| tylkoOpoznione | No | Tylko pisma po terminie (z parametrem adresat: po terminie u tego adresata). Serwer liczy termin sam, nie z licznika Sejmu |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safe-read profile (readOnly, idempotent, non-destructive), and the description adds substantial value beyond them: the 21-day deadline status model (odpowiedziano/w terminie/po terminie), the poTerminieU addressee list, the adresat scoping subtlety, and the partial-result behavior (wynikCzesciowy) with an instruction to surface it. This is rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads purpose before the special-case behaviors. Nearly every sentence carries useful information, though the paragraph is long enough to benefit from slight structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, return values need not be explained, yet the description still flags the key derived field (wynikCzesciowy) and status semantics. Combined with the annotations and 11 fully described params, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value the schema lacks: how adresat changes status/delay to apply ONLY to that addressee, and how sortuj="opoznienie" reorders results. These are cross-parameter behaviors not expressible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Wyszukuje") and resource ("interpelacje albo zapytania pisemne w rejestrze Sejmu"), and enumerates the search dimensions (author, addressee, title word, date). This clearly distinguishes the tool from siblings like pismo (detail view) or szukaj_drukow. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage routing: for "which are most late" use sortuj="opoznienie", and default ordering is newest-first. It also clarifies the adresat scoping case. It stops short of explicitly naming alternative sibling tools for author lookup or dispute detail, so it is clear context without full when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_procesowSzukaj procesów legislacyjnychARead-onlyIdempotent
Wyszukuje procesy legislacyjne (projekty ustaw i uchwał) po frazie w tytule ALBO w opisie projektu, rodzaju dokumentu, stanie i dacie. Fraza może być potoczna („składka zdrowotna przedsiębiorcy”, „depenalizacja aborcji”): tytuły nowelizacji są jednakowe, temat jest w opisie; pole trafienie mówi, gdzie ją znaleziono, a opis przy wyniku odróżnia projekty o tym samym tytule. Pytasz o ustawę? Dodaj rodzajDokumentu="projekt ustawy". Parametr stan liczy procesy w danym stanie w całej kadencji (np. "skierowana do TK", "zawetowana", "u Prezydenta", "opublikowana", "w toku"): tego wymagają pytania „ile ustaw…”. Daty od/do (włącznie) domyślnie łapią proces, którego KTÓRAKOLWIEK data leży w zakresie: wszczęcie, zamknięcie w Sejmie albo ostatnia zmiana w rejestrze (ustawa wszczęta w 2024, a uchwalona w 2025, jest w 2025); wedlugDaty zawęża do jednej. Wynik mieści się w ok. 20 tys. znaków; resztę daje przesuniecie=nastepnePrzesuniecie. Głosowanie końcowe i etapy daje narzędzie proces. Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Do dnia (włącznie) | |
| od | No | Od dnia (włącznie); której daty dotyczy, mówi wedlugDaty | |
| stan | No | Stan procesu: "w toku" (w Sejmie, bez decyzji), "zakończona bez uchwalenia", "uchwalona", "uchwalona, nieopublikowana", "opublikowana", a z etapów uchwalonych, nieopublikowanych ustaw: "w Senacie", "u Prezydenta", "podpisana, nieopublikowana", "zawetowana", "skierowana do TK" | |
| fraza | No | Słowa z tytułu albo z opisu projektu, bez względu na polskie znaki | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 100) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| uchwalone | No | true: tylko uchwalone przez Sejm, false: tylko nieuchwalone | |
| wedlugDaty | No | Po której dacie filtrować od/do: którejkolwiek (domyślnie: wszczęcia, zamknięcia w Sejmie albo ostatniej zmiany), tylko wszczęcia, tylko ostatniej zmiany w rejestrze albo tylko zamknięcia w Sejmie | dowolnej |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| rodzajDokumentu | No | Np. "projekt ustawy", "projekt uchwały" |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read-only/idempotent/open-world safety, the description adds real operational context: ~20k character result cap, pagination, and a partial-result failure mode ('wynikCzesciowy') with the instruction to warn the user upfront. The pagination hint 'przesuniecie=nastepnePrzesuniecie' is muddled against the schema's integer type, keeping this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and core scoping are front-loaded, and each sentence carries substantive information about dates, states, and pagination. It is long and dense for a tool description, and the agent-directed instruction about the opening line of the reply sits awkwardly inside a tool spec.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, mostly-optional search tool with an output schema, the description covers the interpretive gaps the schema cannot: date-window semantics, state semantics, colloquial-query behaviour, pagination, and partial-result handling. Nothing an agent needs to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3, but the description adds cross-parameter meaning the schema lacks: the default date semantics of od/do (start, closure, or last registry change, inclusive) and how wedlugDaty narrows it. It also clarifies stan counts by state across the whole term and that the phrase may be colloquial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Wyszukuje procesy legislacyjne') and enumerates exactly what can be matched: phrase in title OR description, document type, state, and date. It also names the sibling it is not ('Głosowanie końcowe i etapy daje narzędzie proces'), so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use guidance tied to question types ('Pytasz o ustawę? Dodaj rodzajDokumentu=...', 'tego wymagają pytania „ile ustaw…”') and routes voting/stage questions to the sibling 'proces'. It lacks explicit when-not-to-use conditions (e.g. versus szukaj_projektow or szukaj_drukow), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
szukaj_projektowProjekty wniesione do SejmuARead-onlyIdempotent
Rejestr projektów ustaw i uchwał wniesionych do Sejmu: kto wniósł (posłowie, Rada Ministrów, Prezydent, Senat, komisja, obywatele), data wpływu, numer druku, opis projektu, czy był w konsultacjach publicznych. Fraza szuka w tytule ALBO w opisie (tytuły nowelizacji są jednakowe). Pole stan ma tylko trzy wartości rejestru: aktywny (nie wycofany), wycofany, nie nadano biegu; etap (uchwalony, opublikowany) podaje pole uchwalony/publikacja albo narzędzie proces po numerze druku. Daty od/do to data WPŁYWU; o datę doręczenia posłom pytaj szukaj_drukow.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Wpłynęły do dnia (włącznie) | |
| od | No | Wpłynęły od dnia (włącznie); data wpływu, nie doręczenia | |
| stan | No | Status w rejestrze projektów: aktywny znaczy tylko „nie wycofany”, nie „w toku” (część aktywnych jest uchwalona) | |
| fraza | No | Słowa z tytułu albo z opisu projektu, bez względu na polskie znaki | |
| limit | No | Ile wyników najwyżej (domyślnie 20, max 100) | |
| rodzaj | No | ||
| unijne | No | Tylko projekty wdrażające prawo UE | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| wnioskodawca | No | ||
| konsultacjeTrwaja | No | Tylko projekty, których konsultacje publiczne trwają dziś | |
| konsultacjePubliczne | No | Tylko projekty poddane kiedykolwiek konsultacjom publicznym |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds genuine behavioral context: the stan field is limited to three registry values and 'aktywny' means only 'not withdrawn' (not 'in progress'), and that od/do refer to the receipt date, not the delivery date. That trap-avoidance is real value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph but front-loads the resource definition before moving to field/date caveats. Every clause carries information (who can submit, date semantics, stan/etap disambiguation, sibling routing), though the packed semicolon style makes it slightly dense for the amount of content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return format need not be described. The description covers the notable field semantics, the receipt-vs-delivery date distinction, and where to go for crossing concerns (etap, delivery). It is essentially complete for a read-only search tool, with only minor room for stating the default kadencja behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), so the baseline is 3. The description still adds meaning beyond the schema: fraza searches in title OR description (with the note that amendment titles are identical), and it clarifies the semantic ambiguity of stan and of the od/do date range. This exceeds what the schema properties alone convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (rejestr projektów ustaw i uchwał wniesionych do Sejmu) and enumerates the substantive content it exposes: wnioskodawca, data wpływu, numer druku, opis, consultations. An agent can tell this apart from the print-centric siblings (szukaj_drukow) and proses-centric siblings (szukaj_procesow) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent for adjacent needs: etap (uchwalony/opublikowany) via the proces tool by numer druku, and date-of-delivery via szukaj_drukow. That gives clear context, but there is no explicit statement of when to prefer this tool over szukaj_drukow or szukaj_procesow for the core search itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tekst_drukuTekst druku sejmowegoARead-onlyIdempotent
Pełny tekst druku sejmowego (projekt ustawy, uzasadnienie, OSR, opinie) strona po stronie, z pliku PDF, DOCX albo DOC, ze spisem treści (działy, rozdziały, artykuły, uzasadnienie) i numerami stron. Duży druk pokazuje porcjami: najpierw spis i pierwsze strony, potem strony="11-20" albo artykul="52". Plik pobiera z api.sejm.gov.pl raz i trzyma na dysku użytkownika: do 20 MB bez pytania, większy dopiero za zgodą użytkownika. Strony bez warstwy tekstowej (skany) są oznaczone; odczyt maszynowy daje ocr=true (wynik oznaczony jako odczyt maszynowy). Cytując albo streszczając druk, zawsze podaj numer druku, nazwę pliku i numer strony (przy Wordzie numer części i artykuł) oraz link z pola cytowanie.url; zaproponuj użytkownikowi otwarcie oryginału („Otworzyć plik, żeby sprawdzić?”). Nie parafrazuj treści druku bez wskazania pliku i strony.
| Name | Required | Description | Default |
|---|---|---|---|
| ocr | No | Odczyt maszynowy (OCR) stron-skanów w pokazanym zakresie, na tym komputerze; ponad 10 stron naraz tylko za zgodą użytkownika | |
| plik | No | Nazwa pliku z listy plików druku (np. "2457-ustawa.docx"); domyślnie główny PDF druku | |
| numer | Yes | Numer druku, np. "2457", "851-A" albo "2457-001" (druk dodatkowy) | |
| zgoda | No | Tylko gdy użytkownik zgodził się na to, o co pytało poprzednie wywołanie (pole potrzebnaZgoda): klucz zgody, np. ["duzy-plik"] albo ["ocr"] | |
| strony | No | Strony do pokazania: "5" albo "5-12" (najwyżej 50 naraz); w pliku Word to numery części | |
| znakow | No | Najwięcej znaków tekstu w odpowiedzi (domyślnie 20000, max 25000) | |
| artykul | No | Numer artykułu druku, np. "12" albo "12a": pokaże strony od miejsca, gdzie się zaczyna | |
| odswiez | No | Pobierz plik z Sejmu od nowa zamiast z dysku | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Opis wnosi bogaty kontekst poza adnotacjami: plik pobierany z api.sejm.gov.pl raz i trzymany na dysku, próg 20 MB bez pytania i większy za zgodą, skany oznaczane, OCR jako odczyt maszynowy oraz konieczność podania cytowania.url. Adnotacje dają tylko profil bezpieczeństwa (readOnly/openWorld/idempotent), a opis dodaje zachowanie cache, limity i przepływ zgody, co jest realną wartością.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Treść jest gęsta, ale front-loadowana od tego, czym jest narzędzie, i każdy fragment (porcjowanie, limity, OCR, reguły cytowania) ma zastosowanie. Nieco rozwlekła i łączy opis techniczny z instrukcjami redakcyjnymi, stąd nie 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Przy istniejącym output schema opis nie musi omawiać zwracanych wartości, a mimo to pokrywa workflow porcjowania, limity rozmiaru, przepływ zgody, obsługę skanów/OCR i wymogi cytowania. Dla 9-parametrowego narzędzia jest kompletny.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Przy 100% pokryciu schematu parametry są już udokumentowane, więc bazowy poziom to 3. Opis podnosi to, pokazując semantykę międzyparametrową: sposób łączenia stron/artykul przy porcjowaniu oraz zależność zgoda–potrzebnaZgoda (zgoda tylko po wcześniejszym pytaniu).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Stany jednoznacznie czasownik+zasób: pełny tekst druku sejmowego, strona po stronie, z PDF/DOCX/DOC, ze spisem treści i numerami stron. Wyraźnie odróżnia się od sąsiadów typu druk (metadane) i szukaj_drukow (wyszukiwanie), bo opisuje pobranie i odczyt treści dokumentu.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Daje konkretny kontekst użycia: duże druki pokazywane porcjami (najpierw spis i pierwsze strony, potem strony="11-20" albo artykul="52") oraz reguły cytowania i parafrazowania. Nie wymienia jednak wprost alternatyw ani warunków 'kiedy nie używać' względem rodzeństwa, więc brakuje pełnej 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transmisjeNagrania i transmisje posiedzeńARead-onlyIdempotent
Nagrania posiedzeń Sejmu, komisji i innych wydarzeń w Sejmie z linkami do odtwarzacza: z jednego dnia (data), z przedziału dat, jednej komisji (kod) albo po słowie w tytule. Dzisiejsze transmisje: dzis=true.
| Name | Required | Description | Default |
|---|---|---|---|
| do | No | Data w formacie RRRR-MM-DD | |
| od | No | Data w formacie RRRR-MM-DD | |
| data | No | Jeden dzień | |
| dzis | No | Transmisje z dzisiaj | |
| fraza | No | Słowa z tytułu lub opisu transmisji (dopasowanie po rdzeniu, np. "sztuczn inteligen") | |
| limit | No | Ile wyników najwyżej (domyślnie 30, max 50) | |
| komisja | No | Kod komisji, np. "ZDR" | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds that results include player links and clarifies the available query modes, but says nothing about pagination behavior or result ordering beyond what the schema implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences front-load the resource and enumerate the query modes efficiently. Nothing feels padded, though the enumeration reads as a list rather than a prioritized summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 optional parameters all documented, a full output schema, and annotations covering the safety profile, the description needs only to orient the caller, which it does. Minor gaps remain around sibling differentiation and pagination, but the tool is callable as described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including data, od/do, komisja, fraza, dzis) is fully documented in the schema. The description names the same query axes (single day, range, committee code, title word, today) but adds no syntax or behavioral detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (recordings and broadcasts of Sejm sessions, committees, and events) with the concrete payoff of player links, which distinguishes it from session/general tools. It does not, however, explicitly differentiate itself from close siblings like lista_posiedzen or posiedzenia_komisji, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implicitly tells the agent which query modes are available (single day, date range, committee code, title word, today's broadcasts), which is useful. But there is no explicit when-to-use guidance versus alternatives and no exclusions, leaving the agent to infer the choice among overlapping sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tresc_aktuTreść aktu prawnegoARead-onlyIdempotent
Tekst aktu z bazy ELI jako zwykły tekst: cały w porcjach po 12 tys. znaków, jeden artykuł (artykul: "52", "52a", "764^5") albo jedna jednostka (fragment: id ze spisu). Ze spis=true zwraca spis artykułów i rozdziałów z ich id. Długie akty (kodeksy) czytaj artykułami, nie w całości. Każda odpowiedź podaje tytuł, rodzaj i oznaczenie aktu (pole akt): sprawdź, że to ten akt, o który pytano. Indeksy górne są zachowane (Art. 764⁵, § 2¹). Gdy akt albo jego najnowszy tekst jednolity ma tekst tylko w PDF, czyta tekst z PDF (pole zPdf; bez spisu jednostek, artykuł wycięty po nagłówku „Art. N.”); skanu bez warstwy tekstowej nie odczyta. Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| od | No | Od którego znaku zacząć (dla długich tekstów) | |
| spis | No | Zwróć spis jednostek zamiast tekstu | |
| adres | Yes | Adres aktu: wydawca/rok/pozycja, np. "DU/2026/62" (Dziennik Ustaw) albo "MP/2023/1261" (Monitor Polski). Dla aktów sprzed 2012 r. adres to rok/POZYCJA, nie numer dziennika (Dz.U. 1997 nr 78 poz. 483 → DU/1997/483); Konstytucja RP to DU/1997/483. Adresu nie zgaduj: bez pewności weź go z szukaj_aktow. | |
| artykul | No | Numer artykułu, np. "52", "52a"; z indeksem górnym "764^5" (art. 764⁵) | |
| fragment | No | Id jednostki ze spisu, np. "arti_1-pint_2" albo "book_PIERWSZA-part_OGÓLNA-titl_VI-arti_117-para_2_1" | |
| brzmienie | No | aktualne: z najnowszego tekstu jednolitego, z HTML albo, gdy ELI ma go tylko w PDF, z PDF (domyślnie); pierwotne: z dnia ogłoszenia | aktualne |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: PDF-only acts are read from PDF (field zPdf, no unit index, article cut at the 'Art. N.' header), text-layer-less scans cannot be read, superscripts are preserved, and partial results surface as wynikCzesciowy that must be disclosed to the user up front.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the core purpose and modes come first, fallbacks and caveats after. Parenthetical clauses add detail without padding, though the sentence on PDF handling and the final partial-result sentence are somewhat packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, yet the description still names the key response fields (akt, zPdf, wynikCzesciowy) and covers the failure modes an agent must handle. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description adds semantic glue: it shows what 'spis=true' returns (article/chapter index with ids) and that those ids feed the 'fragment' parameter, plus worked examples for 'artykul' ("52", "52a", "764^5").
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Tekst aktu z bazy ELI jako zwykły tekst') and enumerates the three retrieval modes (whole act chunked at 12k chars, single article, single unit), so an agent immediately knows this is the content-retrieval tool as opposed to the search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage directives: long acts/codes should be read article-by-article rather than whole, and the response's 'akt' field should be checked to confirm the right act. It lacks explicit routing to siblings (e.g. szukaj_aktow vs tekst_druku), though the search-vs-fetch distinction is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tresc_wypowiedziTreść wypowiedzi ze stenogramuARead-onlyIdempotent
Treść jednej wypowiedzi ze stenogramu Sejmu jako zwykły tekst, w porcjach po 12 tys. znaków.
| Name | Required | Description | Default |
|---|---|---|---|
| od | No | Od którego znaku zacząć | |
| data | Yes | Dzień posiedzenia (RRRR-MM-DD) | |
| numer | Yes | Numer wypowiedzi z wypowiedzi_posiedzenia | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safe-read profile is covered. The description adds one genuinely useful behavioral fact beyond the schema: output is returned in ~12,000-character chunks, implying pagination. It does not say how an agent knows more content remains or that the od parameter continues the read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence stating what is returned (statement text), in what form (plain text), and at what granularity (12k-character chunks). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with an output schema, return values need not be explained. The main remaining gap is the retrieval workflow: the description mentions chunking but never tells the agent to reuse od to fetch subsequent chunks, nor points to wypowiedzi_posiedzenia for obtaining numer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents od, data, numer and kadencja in Polish. The description only implicitly touches the od/pagination parameter via 'w porcjach po 12 tys. znaków' and adds no format or syntax detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource: fetching the full text of a single Sejm transcript statement, as plain text. The phrase 'jednej wypowiedzi' implicitly contrasts with the sibling wypowiedzi_posiedzenia (which lists statements), though that differentiation lives mainly in the schema's numer description, not in the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when/when-not statement or named alternative in the description; usage is only implied by 'jednej wypowiedzi' and the mention of chunking. The cross-reference to wypowiedzi_posiedzenia as the source of the numer value appears only in the parameter schema, not here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wypowiedzi_posiedzeniaKto mówił na posiedzeniu SejmuARead-onlyIdempotent
Spis wypowiedzi z jednego dnia posiedzenia Sejmu: numer, mówca, funkcja, godziny, czy mówca był sprawozdawcą komisji, czy wypowiedź była wygłoszona. Na pytanie „kto najczęściej zabierał głos” użyj zestawienie=true: liczba wypowiedzi na mówcę, osobno wygłoszone i niewygłoszone (złożone do protokołu), bez pobierania całego spisu. Z filtrem mowca (do 10 wypowiedzi) i z tylkoSprawozdawcy (pierwszych 40) przy każdej jest punkt porządku obrad, którego dotyczyła; czego serwer nie zdąży przeczytać, ma null i uwagę. Treść daje tresc_wypowiedzi. Filtr mowca szuka po nazwisku mówcy, nie po temacie; sprawozdawców pokazuje tylkoSprawozdawcy=true. Starsze dni rejestr oddaje wolno (nawet kilkanaście sekund). Wynik bywa niepełny (brak czasu, awaria Sejmu, limit): wtedy ma pole wynikCzesciowy i powiedz to użytkownikowi na początku odpowiedzi.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Dzień posiedzenia (RRRR-MM-DD); bez daty, razem z mowca albo tylkoSprawozdawcy, przeszukuje wszystkie dni posiedzenia | |
| limit | No | Ile wyników najwyżej (domyślnie 100, max 300) | |
| mowca | No | Tylko wypowiedzi tej osoby (fragment nazwiska) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| posiedzenie | Yes | ||
| zestawienie | No | Zamiast spisu: liczba wypowiedzi na mówcę (wygłoszone i niewygłoszone osobno) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| tylkoSprawozdawcy | No | Tylko wystąpienia sprawozdawców komisji |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Ujawnia istotne cechy poza adnotacjami: wolne działanie dla starszych dni (kilkanaście sekund), możliwy niepełny wynik z polem wynikCzesciowy i instrukcję powiadomienia użytkownika, ograniczenia filtrów (do 10 wypowiedzi, 40 sprawozdawców) oraz zachowanie przy braku daty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Informacje są gęste i dobrze uporządkowane, ale tekst jest długi i miejscami wielowątkowy. Każde zdanie wnosi wartość, choć całość mogłaby być nieco bardziej zwięzła.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Przy 8 parametrach, bogatym schemacie i istniejącym output schema opis uzupełnia wszystkie krytyczne aspekty: tryby działania, filtry, ograniczenia, zachowanie przy błędach i wskazówki dla użytkownika.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema ma 88% pokrycia opisami, więc baseline to 3. Opis dodaje jednak semantykę wykraczającą poza schemat: co dokładnie filtruje mowca, jak działa zestawienie, co oznaczają null i uwaga przy braku punktu porządku obrad.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Precyzyjnie określa zasób (spis wypowiedzi z jednego dnia posiedzenia) i wyliczа zwracane pola (numer, mówca, funkcja, godziny, status sprawozdawcy). Wyraźnie odróżnia tryb domyślny od trybu zestawienie, co pozwala odróżnić narzędzie od siblingów typu glosowania_posiedzenia czy tresc_wypowiedzi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Podaje konkretny warunek użycia zestawienie=true (pytanie „kto najczęściej zabierał głos”) oraz wskazuje tresc_wypowiedzi jako źródło treści wystąpień. Wyjaśnia też, kiedy filtr mowca jest właściwy, a kiedy mylący (szuka po nazwisku, nie temacie).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zapytanie_suroweSurowe zapytanie do API SejmuARead-onlyIdempotent
Pobiera dowolny zasób JSON spod https://api.sejm.gov.pl/sejm/ (np. "term10/committees", "term10/bills", "term10/videos/2024-04-24") albo spod /eli/ (ścieżka zaczyna się od "eli/", np. "eli/acts/DU/2026/62/references"). Używaj tylko wtedy, gdy żadne inne narzędzie nie pasuje. Odpowiedź jest surowa: bez werdyktów i bez reguł liczenia, więc nie licz z niej frekwencji ani wyników głosowań samodzielnie. Istniejące zasoby API Sejmu (po "termN/"): MP, MP/{id}, MP/{id}/votings/stats, clubs, clubs/{id} (członkowie z joinDate, datą wejścia do klubu), committees, committees/{kod} (także podkomisja, np. committees/INF01N: skład, appointmentDate, dismissalDate), committees/{kod}/members, committees/{kod}/sittings, proceedings, proceedings/{nr}, proceedings/{nr}/{RRRR-MM-DD}/transcripts (lista wypowiedzi dnia), votings, votings/{pos}, votings/{pos}/{nr}, votings/search, interpellations, writtenQuestions, prints, prints/{nr}, processes, processes/{nr}, bills, videos, videos/{RRRR-MM-DD}, bilateralGroups. ELI: eli/acts/search, eli/acts/{DU|MP}/{rok}/{poz}, …/references, …/struct, eli/changes/acts, eli/types, eli/keywords, eli/references. Nie ma zasobów z płcią posłów ani z demografią, ani z listą prezydium Sejmu (kto jest marszałkiem, pokazuje głosowanie nad wyborem: szukaj_glosowan z frazą „Wybór Marszałka Sejmu”).
| Name | Required | Description | Default |
|---|---|---|---|
| od | No | Od którego znaku odpowiedzi zacząć | |
| sciezka | Yes | Ścieżka względem /sejm/, np. "term10/clubs/KO", albo od "eli/", np. "eli/acts/DU/2026/62" | |
| parametry | No | Parametry zapytania, np. {"limit": 10, "title": "szpital"} |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description goes beyond them by disclosing that the response is raw with no verdicts or counting rules, and by naming resources that do NOT exist (gender, demographics, presidium list), which prevents wasted off-target queries. It does not detail pagination/rate limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The block is long, but it is front-loaded with purpose, then the fallback constraint, then supporting detail. For an open-ended path parameter, the resource enumeration genuinely earns its place, though the density makes it less immediately scannable than an ideal definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present (so return values need not be described) and annotations covering the safety profile, the description supplies everything else an agent needs: when to use it, which paths are valid, and what it must not be used to infer. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description meaningfully enriches 'sciezka' by enumerating the valid resource families (MP, clubs, committees incl. subcommittees, proceedings, votings, prints, processes, bills, videos, ELI acts/references/struct/types) rather than just the schema's single example. It adds no extra meaning for 'od' or 'parametry', so it does not reach 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: fetching arbitrary JSON from the Sejm API tree (paths under /sejm/ or /eli/), with concrete example paths. It also explicitly positions itself against siblings via 'Używaj tylko wtedy, gdy żadne inne narzędzie nie pasuje', so an agent can tell it apart from all the purpose-built tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule (use only as a fallback when no other tool fits), a when-not constraint (do not compute attendance or vote results from this raw output), and even routes a specific unmet need (Sejm presidium/marshal) to the alternative szukaj_glosowan with a suggested query phrase. This is near-complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
znajdz_poslaZnajdź posłaARead-onlyIdempotent
Szuka posłów danej kadencji po imieniu lub nazwisku (bez względu na polskie znaki), klubie lub numerze okręgu. Zwraca numer posła (id), którego wymagają inne narzędzia. Klub to przynależność DZIŚ, nie w dniu dawnego głosowania. Przy pośle, którego mandat wygasł, wynik podaje posłów jego okręgu ślubujących później (pole slubowaliPozniejWOkregu), a przy pośle, który ślubował w trakcie kadencji, mandaty wygasłe wcześniej w jego okręgu (wygasliWczesniejWOkregu). Każdy poseł ma glosowWWyborach; sortuj="glosy" układa listę od największej liczby głosów (np. okreg + sortuj="glosy" to ranking okręgu). tylkoWygasle=true: tylko posłowie z wygasłym mandatem, z liczbą według powodu.
| Name | Required | Description | Default |
|---|---|---|---|
| klub | No | Skrót klubu z rejestru, np. "KO", "PiS", "PSL-TD", "Polska2050"; jednoznaczny początek skrótu ("PSL") też wystarczy | |
| fraza | No | Imię i/lub nazwisko, np. "Petru" albo "ryszard petru" | |
| limit | No | Ile wyników najwyżej (domyślnie 100, max 100) | |
| okreg | No | Numer okręgu wyborczego (1-41) | |
| sortuj | No | Kolejność: "rejestr" (domyślnie, alfabetycznie) albo "glosy" (od największej liczby głosów w wyborach) | |
| kadencja | No | Numer kadencji Sejmu; domyślnie 10 (bieżąca, od 13 listopada 2023) | |
| przesuniecie | No | Od którego wyniku zacząć (stronicowanie) | |
| tylkoAktywni | No | Pomiń posłów, których mandat wygasł. Domyślnie tak w bieżącej kadencji, a nie w zakończonych (tam mandat wygasł wszystkim) | |
| tylkoWygasle | No | Tylko posłowie, których mandat wygasł przed końcem kadencji (z liczbą według powodu wygaśnięcia) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uwagi | No | |
| zrodla | Yes | |
| kalendarz | No | |
| wynikCzesciowy | No | Tylko przy wyniku NIEPEŁNYM: powiedz to użytkownikowi na początku |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations: it warns that 'klub' is TODAY's affiliation not the historic one, explains the slubowaliPozniejWOkregu/wygasliWczesniejWOkregu fields for expired and mid-term mandates, and clarifies the glosowWWyborach count and sortuj='glosy' ranking. Rich disambiguation of a politically subtle data model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core search purpose, then layers special-case semantics in subsequent sentences; each sentence conveys distinct information. It is dense with parenthetical fields but earns most of its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with a high-coverage schema and an output schema, the description supplies exactly the missing behavioral context (today-vs-historic club, mandate-expiry edge cases, sort semantics) an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds cross-parameter meaning the schema cannot convey: okreg + sortuj='glosy' yields a district ranking, and tylkoWygasle returns a count broken down by reason. It does not re-explain syntax already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Szuka) and resource (posłów) plus the three lookup dimensions (name, club, district) and the key output (the id other tools need). An agent can immediately tell this is the roster-search entry point distinct from profil_posla.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames itself as the tool that yields the 'numer posła (id), którego wymagają inne narzędzia', which routes the agent to it before calling detail tools. Lacks explicit when-not-to-use or a named sibling alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
v0.3.0- First observed
akt - First observed
druk - First observed
glosowania_posiedzenia - First observed
glosowanie - First observed
glosy_posla_w_dniu - First observed
grupy_bilateralne - First observed
kadencje - First observed
kluby - First observed
komisje - First observed
lista_posiedzen - First observed
pismo - First observed
porzadek_posiedzenia - First observed
posiedzenia_komisji - First observed
proces - First observed
profil_posla - First observed
slownik_eli - First observed
szukaj_aktow - First observed
szukaj_drukow - First observed
szukaj_glosowan - First observed
szukaj_pism - First observed
szukaj_procesow - First observed
szukaj_projektow - First observed
tekst_druku - First observed
transmisje - First observed
tresc_aktu - First observed
tresc_wypowiedzi - First observed
wypowiedzi_posiedzenia - First observed
zapytanie_surowe - First observed
znajdz_posla
TDQS
Scored across 29 tools
Tools mostly target distinct resources/actions, and the search/detail/text pairs are clearly separated in the descriptions. Some overlap remains among process/project/print/act search tools and the raw fallback, but explicit guidance reduces misselection.
Almost all names are snake_case and follow a predictable domain pattern: szukaj_* for searches, plural nouns for listings, and singular noun phrases for details. Minor deviations like znajdz_posla versus szukaj_* and mixed noun/verb styles are readable but not perfectly uniform.
At 29 tools, the surface exceeds the 25+ threshold and is heavy for an agent to scan and select from. The Sejm domain is broad, but some search/detail pairs and raw fallback could likely be consolidated.
Coverage spans terms, MPs, clubs, committees, sittings, agendas, votings, interpellations, legislative processes, bills, prints, legal acts, speeches, transmissions, and raw API fallback. For a read-only parliamentary data server, this provides a very complete lifecycle surface with no obvious dead ends.
Maintenance
Related MCP Connectors
Verified Polish open data for AI agents: debt, budget, 460 MPs, votings, judiciary search, RAG.
Semantic search over Polish law and case law, citing the exact in-force article.
Polish law: search statutes (ISAP), court rulings, verify citations. Free tier + paid plans + x402.
Resolve, search and verify legal citations against the official sources, with provenance.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI-powered legal research and analysis of Polish legal acts from the Sejm API. Provides comprehensive search, document retrieval, metadata analysis, and content access for legal documents from Dziennik Ustaw and Monitor Polski.1322MIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic search over Polish court judgments and legislative acts via MCP. Allows LLMs to retrieve legal documents using natural language queries.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides access to Poland's national open data portal (Otwarte Dane) through natural language queries, enabling users to search and retrieve datasets from dane.gov.pl.243 npmMIT
- AlicenseAqualityBmaintenanceEnables searching Polish parliamentary prints and retrieving the full legislative process history, including links to final legal acts, via the official Sejm API.3MIT