Podržani alati
Trenutno Domovina MCP poslužitelj nudi sljedeće alate za pretraživanje i pregled korpusa. Dodatni alati u izradi navedeni su pod „Planirano".
Aktivni alati
| Alat | Opis | Parametri |
|---|---|---|
search_podcasts |
Semantičko pretraživanje korpusa hrvatskih katoličkih i političkih podcasta. Vraća do 50 chunkova transkripta s ocjenom relevantnosti, imenom govornika, vremenom u epizodi i dubokim linkom na YouTube na točnu sekundu. Podržava hibridno pretraživanje (semantika + leksički filter) za vlastita imena gdje sami vektori imaju slabosti. |
query (string, obavezan): prirodno jezični upit, 2–500 znakova
limit (broj, neobavezan): 1–25, zadano 10 channel (string, neobavezan): slug kanala (npr. podcast_cuspajz)speaker (string, neobavezan): filter na govornika — case-insensitive partial match (npr. Miletić)min_upload_date, max_upload_date (YYYY-MM-DD, neobavezno): filter po datumu objave include_summaries (bool, zadano true): ako false, isključuje AI sažetke (samo direktni citati)lexical_terms (popis stringova, neobavezan): hibridni filter — chunk mora sadržavati SVE navedene tokene; do 10 tokena |
get_episode |
Dohvati metapodatke, popis poglavlja i (po želji) cijeli transkript
jedne epizode prema YouTube ID-u. Vraća naslov, govornike, trajanje,
popis poglavlja (outline chunkovi) i transkript po segmentima s
timestamp-ima. Za duge epizode (preko ~80 000 znakova) bez parametra
view_range, transkript je izostavljen uz uputu da se
dohvati po dijelovima. Koristi za doktrinarnu i temeljnu analizu
cijele epizode kada search_podcasts daje preslab obuhvat.
|
youtube_id (string, obavezan): 11-znakovni YouTube video ID (npr.
5J9GQ0sFe3M)include_transcript (bool, neobavezan): zadano true; false vraća samo meta + poglavljaview_range (popis dvaju brojeva, neobavezan): [start_sec, end_sec] — filtriraj chunkove na vremenski raspon (npr. [0, 600] = prvih 10 min). Bypassira soft limit.chapter_index (broj, neobavezan): 1-based indeks u chapters[] — convenience nad view_range-om. Mutually exclusive s njim.
|
list_channels |
Vraća popis svih kanala u korpusu sa statistikama (broj epizoda i
chunkova, datum prvog i zadnjeg uploada). Koristi za pregled korpusa
i za biranje validnog slug-a kanala u channel filterima
drugih alata.
|
sort_by (neobavezno):
episodes (default), chunks, channel (abecedno)
|
list_episodes |
Vraća listu epizoda korpusa (distinct po YouTube ID-u) s metapodacima:
naslov, kanal, datum objave, trajanje, govornici, broj chunkova.
Komplementarno search_podcasts — koristi za browsing
korpusa bez specifičnog upita, npr. „tko sve gostuje u kanalu X",
„najnovije epizode iz svibnja", „epizode govornika Y".
|
channel (string, neobavezan): slug kanala
speaker (string, neobavezan): partial match na govornika min_upload_date, max_upload_date (YYYY-MM-DD, neobavezno) sort_by: upload_date_desc (default), upload_date_asc, chunks_desc, duration_desclimit (broj, neobavezno): 1–100, zadano 20 |
count_mentions |
Agregator: vraća top N grupa (kanal, govornik ili mjesec) po broju
chunkova koji semantički matchaju upit. Vraća samo brojeve, ne sadržaj
— drastično manji odgovor od search_podcasts. Idealan za
statistička pitanja: „u kojem kanalu najviše govore o X", „tko najčešće
spominje Y", „u kojem mjesecu najviše rasprava o Z".
|
query (string, obavezan): semantic upit za relevantne chunkove
group_by (obavezan): channel | speaker | monthrelevance_threshold (0–1, zadano 0.4): cosine similarity prag limit (broj, neobavezno): 1–50, zadano 20 min_upload_date, max_upload_date, channel (filteri) |
get_person |
Profil govornika: agregira sve epizode u kojima jedna osoba
govori, kroz sve kanale, iza stabilnog sluga (npr.
zeljka-markic, don-tomislav-lukac). Vraća
broj kanala i epizoda, raspodjelu po kanalima, mjesečni timeline i
popis epizoda s dubinskim poveznicama. Granica: „govori" (govornik u
transkriptu), ne „spominje se u tekstu".
|
slug (string, obavezan): ASCII-slug imena
(č→c, ć→c, š→s, ž→z, đ→d, razmak→
-)
|
find_in_transcript |
Doslovna pretraga transkripta s točnom sekundom: gdje je
izgovorena riječ, ime ili fraza. Jedinica je segment od nekoliko
sekundi, ne poglavlje. Unutar jedne epizode vraća sve pogotke
kronološki, inače najrelevantnije grupirane po epizodi. Tolerira
greške prepoznavanja govora i hrvatske padeže („Matija" pogađa i
„Matijom"). Svaki pogodak je označen kao exact ili
typo i ima poveznicu na točnu sekundu. Za pitanja
„u kojem trenutku X kaže Y"; za značenje koristi
search_podcasts.
|
query (string, obavezan): riječ, ime ili fraza; u dvostrukim navodnicima = točan slijed riječi
youtube_id (string, neobavezan): samo ova epizoda, svi pogoci po vremenu channel, speaker (neobavezno): filter na kanal ili na govornika koji izgovara segment word_forms (bool, zadano true): zadnju riječ traži i u drugim padežimacontext (bool, zadano true): dodaj prethodni i sljedeći segmentlimit (broj, neobavezno): 1–200, zadano 100 unutar epizode, inače 20 |
server_info |
Vraća metapodatke o MCP servisu i stanju korpusa: verziju, build info, statistiku dataset-a (broj kanala, epizoda, chunkova, datum najnovije i najstarije epizode), popis dostupnih alata. Koristi za debug, provjeru svježine podataka i otkrivanje koje su verzije/funkcionalnosti trenutno dostupne. |
Nema parametara.
|
Planirano (TBD)
Sljedeći alati su u planu ali nisu još implementirani na produkciji. Prati napredak na GitHub Issues.
| Alat | Opis | Status |
|---|---|---|
get_speaker |
Dohvati profil govornika prema imenu — popis pojavljivanja po epizodama, glavne teme, link na entity resolution. Zahtijeva završetak ensemble speaker pipeline-a (TitaNet + pyannote-wespeaker34). | planirano (Faza 3) |
chat (Q&A) |
Cjelokupni Q&A cjevovod: tvoje pitanje → retrieval → reranker → Gemini 2.5 Flash generacija s citatima iz transkripta. Resursno zahtjevnija operacija — vlastiti rate-limit bazen (vidi Ograničenja). | planirano (Faza 2) |
Stil odgovora
Svi alati vraćaju strukturirani JSON unutar MCP content bloka tipa
text (JSON-stringified). Vremenski timestamp-i su u sekundama od
početka videa; datumi u YYYY-MM-DD formatu (ISO 8601). Hrvatska
slova zadržana su u UTF-8 bez transliteracije.