Bază de date unificată peste declarații ANI (peste 1.690 parlamentari + 6776 magistrați), contracte SEAP, verdicte CNSAS, legislație oficială. O conectezi în AI-ul pe care-l folosești deja (Claude, Claude Code, Cursor, ChatGPT) și modelul tău știe acum și averile, contractele publice și dosarele din România, pe lângă tot restul. Nu folosești un asistent AI? O folosești din browser.
Gratuit pentru ONG-uri civice, activiști și cercetători care servesc interesul public. Plata e doar pentru redacții comerciale și organizații cu buget, care subvenționează accesul gratuit al celor mici. Proiect personal al unui dezvoltator care pune umărul la combaterea corupției din România. Despre misiune →
Conectată în clientul pe care-l folosești deja (Claude, ChatGPT, Cursor), baza noastră se adaugă la ce știe și poate modelul: registrele publice din România intră în inteligența lui, alături de tot restul. Sau, dacă nu folosești un asistent AI, o folosești direct din browser.
Prin MCP, baza intră direct în Claude, ChatGPT sau Cursor: o comandă, ~1 minut. De acum modelul tău știe și averile, contractele SEAP și dosarele publice din România, pe lângă tot ce știe și poate deja: le combină cu celelalte unelte ale tale și cu contextul tău. Inferența rulează pe abonamentul tău AI; 100 de cereri/lună gratuit (din cache), 1.000/lună pe Pro cu date proaspete, orice model.
Agentul găzduit rulează la noi: deschizi pagina, întrebi, primești răspuns cu surse. Are acces la web + baza noastră (nu la celelalte unelte ale unui client propriu), dar e zero instalare și cel mai simplu mod de a începe. 300 de mesaje/lună incluse în Pro.
Acest agent AI rulează conectat la /api/mcp, exact endpoint-ul pe care îl vei conecta din Claude Code sau Gemini CLI. Cere-i un profil de avere complet al unui parlamentar (împrumuturi, bunuri vândute, venituri, proprietăți, vehicule); vezi cum înlănțuie uneltele MCP și returnează date cu surse verificabile (cdep.ro / senat.ro + arhivă permanentă).
Cu istoric salvat și instrucțiuni permanente pentru agent.
Declarații avere extrase automat din PDF-uri. Conflicte SEAP detectate. Sinecure cumulate. Risk scores. Zero scraping pentru tine.
Fiecare call check cache (TTL per tool: 1h-30zi). Hit = sub 50ms, zero cost upstream. Te scutește de rate-limits și fees.
Conectezi cu o singură comandă. Apoi browser-ul deschide automat un consent screen (login Google), iar Claude Code stochează token-ul singur. Niciun key paste. Același pattern ca Notion / Figma / Monday MCP.
Lunar, fără contract pe termen lung. Anulează oricând.
Investigator nu e făcut pentru bani. Abonamentul acoperă costurile de infrastructură și subvenționează accesul gratuit al ONG-urilor, activiștilor și jurnaliștilor independenți. Scopul e unul singur: unelte mai bune împotriva corupției din România. De ce fac asta →
Plata cu card prin Stripe (3D Secure). Preț final €29, fără TVA (operator PFA neplătitor de TVA). Factură PDF la fiecare plată. Anulează oricând din /account → Stripe Customer Portal.
Fiecare unealtă răspunde dintr-o bază pre-procesată, cu link spre sursa oficială (cdep.ro, senat.ro, PDF-uri ANI arhivate). Pe scurt, ce acoperă:
Venituri, imobiliare, vehicule, împrumuturi, bunuri vândute, extrase din PDF-urile ANI ale fiecărui parlamentar.
Firme din declarații care apar ca furnizori în contracte publice SEAP, cu scoruri de severitate.
Voturi, discursuri, întrebări, inițiative legislative, prezență, per parlamentar sau per legislatură.
6.776 de judecători și procurori, cu declarațiile lor ANI din 2008 încoace.
Verdicte CNSAS, istoricul mandatelor din 2008-prezent, universități cu probleme de acreditare, date Eurostat.
Discrepanțe venit-achiziții, diurne de subzistență atipice, sumar de avere pe partid.
Toate cache-first cu TTL per tool (vezi tool_cache). Cache hit = sub 50ms, zero cost upstream. Tools suplimentare (court cases, donatori, media ownership) sunt scrise dar ținute internal până trec policy review pe partea de personal data.
| Tool | Descriere | Status |
|---|---|---|
searchMPs | Caută parlamentari. Cel puțin unul din `query` (nume parțial, order-independent, diacritic-stripped) sau `educationFlagged=true` trebuie dat: fără niciun filtru lista e goală (evită dump-ul întregului parlament). Returnează id, nume, party (curent, null pentru MP-uri inactive), last_party (din mandatul cel mai recent, prezent și pentru inactivi), cameră, județ, mandate_count, legislatures[], first_mandate, current_mandate + sources[] (URL-uri cdep.ro/senat.ro per mandat, pentru verificare/citare). Folosește last_party pentru a evita inventarea partidului la MP-uri istorice cu party=null. Combină filtrele: query + educationFlagged = MP-uri care satisfac AMBELE. Parametrul slim (default false) ascunde sources[] și reduce payload-ul la ~50 chars/row. Folosește când vrei toți cei 76 MP-uri flagged într-un singur call (sources le poți cere la nevoie cu un follow-up) | ✔ live |
getMPLoans | Returnează profilul de împrumuturi al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, total_amount_ron, items: [{ section, creditor, loan_type, amount, currency, contract_year, maturity_date, raw_text, needs_ocr, source_idx }] }, trajectory: [{ year, count, total_amount_ron, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count / snapshot.total_amount_ron pentru situația curentă. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași datorii. Parametrul opțional year alege anul pentru snapshot | ✔ live |
getMPDivestedAssets | Returnează bunurile înstrăinate (vândute) de un parlamentar ca listă de evenimente: { mp, count, total_ron, events: [{ asset_nature, divestment_date, buyer, divestment_form, amount, currency, declaration_year, source_idx }], sources }. events = lista cronologică (cea mai recentă întâi) de vânzări distincte. O vânzare re-declarată în mai mulți ani e numărată o singură dată. count și total_ron rezumă evenimentele | ✔ live |
getMPIncome | Returnează profilul de venituri al unui parlamentar, axat pe evoluție: { mp, trajectory: [{ year, total_ron, count, filings }], snapshot: { year, total_ron, items: [{ income_category, family_member, source_name, service_description, annual_amount, currency, source_idx }] }, total_declared_ron, available_years, sources }. trajectory = venitul declarat per an (vederea principală, venitul e un flux anual). snapshot = anul cel mai recent. total_declared_ron = suma venitului declarat pe toți anii. Numele persoanelor sunt omise (GDPR). Parametrul opțional year alege anul pentru snapshot | ✔ live |
getMPRealEstate | Returnează profilul imobiliar al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, total_area_sqm, items: [{ asset_type, category, judet, area_sqm, share, acquisition_mode, acquisition_year, source_idx }] }, trajectory: [{ year, count, total_area_sqm, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count / snapshot.total_area_sqm pentru ce deține persoana acum. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași proprietăți persistente. Parametrul opțional year alege anul pentru snapshot | ✔ live |
getMPVehicles | Returnează profilul de vehicule al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, items: [{ vehicle_type, brand, quantity, year_of_manufacture, acquisition_mode, source_idx }] }, trajectory: [{ year, count, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count pentru câte vehicule deține persoana acum. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași vehicule. Vehiculele nu au un total numeric. Parametrul opțional year alege anul pentru snapshot | ✔ live |
getActivityMPProfile | DISCOVERY tool: arată cât de activ e un parlamentar: { votes_count, speeches_count, proposals_count, questions_count, years[] }. NU date efective. După acest call, pentru DATE folosește getMPVotes/getMPSpeeches/getMPProposals/getMPQuestions cu mpId + (opțional) year. Cere mpId din searchMPs | ✔ live |
getMPVotes | Voturile unui SINGUR parlamentar (plen, mandat 2024-2028). Returnează { mp, count, top: [vote_date, subject, vote (DA/NU/Abtinere/...), vote_url] }. top[] plafonat la cele mai recente; dacă count > top.length, filtrează cu year. Necesită mpId din searchMPs | ✔ live |
getMPSpeeches | Sesiunile la care un SINGUR parlamentar (mandat 2024-2028) a fost prezent la podium. Returnează { mp, count, top: [session_date, session_id, topic, stenogram_url] }. IMPORTANT: scraper-ul nostru captează doar PREZENȚA la sesiune (data + topic generic „Stenograma Şedinţei Senatului/Camerei din data de X"), NU subiectele individuale ale luărilor de cuvânt. Pentru transcript ce a spus efectiv MP-ul, trimite user la senat.ro/Voturi sau cdep.ro/stenograme pentru data respectivă. session_id și stenogram_url sunt frecvent null pentru senatori (gap în sursa primară). Filtrează cu year pentru rest. Necesită mpId | ✔ live |
getMPProposals | Propunerile legislative inițiate de un SINGUR parlamentar (mandat 2024-2028). Returnează { mp, count, top: [registration_number, registration_date, senate_number, title, status, is_law, cdep_url] }. top[] plafonat; filtrează cu year pentru rest. Necesită mpId din searchMPs | ✔ live |
getMPQuestions | Întrebările și interpelările unui SINGUR parlamentar (mandat 2024-2028). Returnează { mp, count, top: [question_date, addressee, title, question_type (intrebare/interpelare), cdep_url] }. top[] plafonat; filtrează cu year pentru rest. Necesită mpId din searchMPs | ✔ live |
searchSubsistenceAnomalies | DISCOVERY cross-MP: parlamentari cu test de subzistență suspect (venit declarat raportat la mărimea familiei). Returnează { count, total_matches, severe_count, critical_count, results: [{ mp: {id, full_name, party, chamber, county}, year, year_income_ron, family_size, daily_per_person_ron, severity }] } sortat asc după daily_per_person_ron (cei mai suspecți primii). Filtre: severity (default "severe" = severe+critical), year (opțional, restrânge la un an), party (opțional), limit (default 25, max 100). Apoi cheamă getMPSubsistence(mpId) pentru detaliu pe traiectorie + getMPIncome pentru declarația brută | ✔ live |
searchIncomeVsAcquisitionAnomalies | DISCOVERY cross-MP: parlamentari cu anomalii venit-vs-achiziții (au cumpărat imobile cu venit declarat zero/redus față de distribuția proprie). Returnează { count, total_matches, results: [{ mp, year, year_income_ron, acquisitions_count, total_acquired_sqm, anomaly_score (0-100), no_income_data }] } sortat desc după anomaly_score. Filtre: minScore (default 60 = anomalii clare), party, limit (default 25, max 100). Apoi cheamă getMPIncomeVsAcquisitions(mpId) + getMPLoans pentru a verifica dacă achiziția a fost finanțată prin împrumut | ✔ live |
getMPSubsistence | Testul de subzistență per parlamentar: venitul declarat raportat la mărimea inferată a familiei (titular + soț/soție + copii), per an. Returnează { mp, trajectory: [{ year, year_income_ron, family_size, daily_per_person_ron, severity }], worst: { year, severity, daily_per_person_ron } | null, has_severe, available_years, sources }. severity: critical (<20 RON/zi/persoană), severe (<50), warning (<100), ok (≥100). has_severe=true e semnal anticorupție-cheie (declarații imposibil de mici pentru câți membri are familia). Euristic: family_size se infereaza, NU dovedește îmbogățire neexplicată; ridică suspiciuni pentru verificare | ✔ live |
getMPIncomeVsAcquisitions | Anomalii venit-vs-achiziții per parlamentar: anii în care a achiziționat imobile cu venit declarat zero/redus față de distribuția proprie. Returnează { mp, anomalies: [{ year, year_income_ron, acquisitions_count, total_acquired_sqm, anomaly_score (0-100), no_income_data }], max_score, has_anomaly, sources }. has_anomaly=true cu max_score≥60 e semnal anticorupție-cheie (achiziții fără sursă declarată). Euristic: agentul trebuie să verifice împrumuturi/bunuri instrăinate înainte de a concluziona; ridică suspiciuni pentru verificare | ✔ live |
getMPConflicts | Conflicte de interese per parlamentar: firme care apar în declarațiile MP-ului (sursă venit / investiție / cumpărător activ înstrăinat / creditor) ȘI au câștigat contracte publice prin SEAP. Returnează { mp, aggregate, conflicts: [{ supplier_name, supplier_cui, declaration_source, declaration_value, family_member, contract_count, total_contract_value_ron, date_range, match_type, match_score, severity, conflict_score, homonym_with?, judet?, most_likely_for_mp? }], sources, homonym_warning? }. Ordonat desc după conflict_score. critical (≥100) = semnal anticorupție-cheie | ✔ live |
getCompanyData | Date despre o FIRMĂ românească după CUI, din Registrul Comerțului + ANAF (sursă: FirmeAPI). Folosește DUPĂ getMPConflicts pentru a închide bucla de conflict: ia supplier_cui al unei firme-furnizor SEAP și află CINE O CONDUCE. Returnează { cui, company_name, status, inactive, caen, administrators, anaf_debts, court_cases, financials, insolvency, mof, branches, arr_licenses, alt_transport_licenses, fetched_parts, matches?, source }. Dacă dai mpName, matches[] marchează administratorii care se potrivesc cu MP-ul: "exact_mp" sau "same_surname" (commonSurname=true = nume comun, de verificat, NU dovadă). NU inventa proprietari. GDPR: doar nume+funcție publice, fără CNP | roadmap |
getCompanyFiscalStatus | Status fiscal CURENT (azi) al unei firme românești după CUI, direct din serviciul web ANAF (v9/tva, anonim, gratuit). Returnează { cui, queryDate, found, name, registrationStatus, caen, isInactive, inactiveSince, reactivatedAt, vatRegistered, vatCancellationReason, vatSince, vatAtCash, splitVat, roEFactura, source }. | ✔ live |
searchSEAPContracts | Caută contracte publice SEAP/SICAP romanesti (slice 2020-2024, ~126k contracte din opentender + cateva din data.gov.ro). Filtre opționale: supplier_name (ILIKE partial match), authority_name (ILIKE), supplier_cui (exact), authority_cui (exact), date_from, date_to (ISO YYYY-MM-DD), min_value (RON), limit (default 50, max 200). Returnează { filters, count, total_value_ron, truncated, contracts[], source } | ✔ live |
draftFOIARequest | Generează draft pentru cerere oficială Lege 544/2001 (liberul acces la informații de interes public) către o instituție publică românească. Tool-ul asigură formatul legal corect: invocă explicit Legea 544/2001 art. 5+6 (evită reclasificarea ca „petiție" cu termen 45 zile), include reminder pentru art. 7 (termen 10 zile calendaristice), calculează deadlines automat, returnează calea de apel (plângere prealabilă + contencios administrativ) | ✔ live |
searchLegislation | Caută LEGI / HOTĂRÂRI DE GUVERN / DECIZII / ORDONANȚE după titlu pe portalul oficial al Ministerului Justiției (legislatie.just.ro). FREE, redistribuibil. Returnează { query, count, results: [{ docId, type, number, date, raw_title, url }] }. Folosește pentru a găsi docId-ul actului relevant, apoi cheamă getLegislation(docId, article?) pentru textul efectiv. EXEMPLE de query bun: „Lege 161 2003" (găsește Legea 161/2003), „Lege 176 2010" (Legea ANI), „Cod Penal", „Cod Civil". Title search e literal: folosește cuvinte-cheie din titlul oficial al actului | ✔ live |
getLegislation | Returnează textul unui act normativ românesc după docId (din searchLegislation). Sursă: legislatie.just.ro (Ministerul Justiției, oficial). Returnează { docId, title, type, number, date_signed, text, article_match?, url }. Dacă dai `article`, extrage doar acel articol din text (mult mai compact decât întregul act care poate avea 100k+ caractere). Folosește IMPERATIV pentru a CITA articole legale în răspunsuri despre conflicte / incompatibilități / sancțiuni. Niciodată invenția unui articol fără fetch. Pentru parlamentari care administrează firme private: Legea 161/2003 art. 82 (docId 43323). Pentru membri Guvern: art. 84 din aceeași lege. Pentru sancțiuni ANI: Legea 176/2010 | ✔ live |
searchCNSAS | Caută verdicte publice CNSAS / colaborare Securitate pe numele unei persoane (relevant pentru parlamentari născuți pre-1970). Sursă: agregare publice din `monitoruloficial.ro` (verdicte oficiale, Lege 187/1999 obligație), `cnsas.ro/comunicate` (când e indexat Google), `memoria.ro` (oral history Securitate), plus presă majoră (HotNews, G4Media, Digi24, Libertatea, Europa Liberă). Returnează { name, total, hits: [{ title, url, description, source_category }], source_breakdown, legal_note }. `source_category`: `official_cnsas` / `official_monitor` (cele mai puternice ca dovadă) > `oral_history` > `press_major` > `press_other`. NU returnăm conținut din dosare confidențiale: datele sunt special category Art 9 GDPR, baza legală e interes public jurnalistic. Folosește IMPERATIV pentru întrebări de tip „are X dosar Securitate?", „a fost colaborator?", „verdict CNSAS pentru Y?". NU porni cu webSearch generic: searchCNSAS e mult mai precis pe surse oficiale. Atenție omonimie: numele comune întorc rezultate amestecate; cere agentului să citeze sursele explicit | ✔ live |
searchCourtCases | Caută dosare juridice deschise pe numele unei persoane în 246 instanțe românești: 15 curți de apel + 1 curte militară + 51 tribunale (incl. 5 militare) + 179 judecătorii. Sursă: portal.just.ro (Ministerul Justiției, SOAP CautareDosare, oficial + gratuit). Returnează { name, total, by_court, by_category, cases: [{ numar_dosar, data, obiect_category, obiect_redacted?, institutie, stadiu, other_parties_count }], coverage_warning, courts_total, courts_succeeded, unavailable_count, source, fromCache, cachedAt }. GDPR: numele celorlalte părți sunt MASCATE (doar `other_parties_count`); obiectele FAMILIE/MINOR redactate la categorie. PRIMA execuție: 20-90s (concurrency 10, per-court timeout 10s, hard cap global 90s). Cache 7 zile → <50ms după. ÎCCJ NU e acoperită (sistem separat scj.ro, defer v2). „0 dosare" + courts_succeeded=246 = nu există în niciuna din 246 instanțe (dar nu și ÎCCJ). Dacă unavailable_count > 0, citează coverage_warning și menționează că acoperirea e parțială. OMONIMIE CRITICĂ: 246-instanță search pe „Ion Popescu" întoarce mii de dosare amestecate de la zeci de persoane diferite. Pentru un MP, returnează doar agregatul + warning explicit că nu se pot atribui dosarele fără verificare CNP/adresă (care lipsesc din GDPR) | roadmap |
getMPEducation | Returnează educația unui parlamentar cu marcaje pentru universități suspecte ("diploma mills"). Întoarce { mp, education: [{ institution, degree, field, flagged, flag_reason, flagged_university_name }], flag_count, sources }. flag_count > 0 e semnalul anticorupție-cheie (diplomă de la universitate marcată). Pentru a găsi MP-uri marcate fără nume specific, folosește searchMPs cu educationFlagged=true | ✔ live |
getConflictFlags | Conflicte de interese SEAP: firme din declarații care apar și ca furnizori în contracte publice. Filtrabile după partid, severitate, nume | ✔ live |
getEurostatData | Date statistice Eurostat pentru comparații UE: șomaj, PIB, salarii minime. Geo: RO, EU27_2020, DE, FR, etc | ✔ live |
verifyBook | Verifică dacă o carte cu un anumit titlu și autor există în Google Books. Util pentru verificarea CV-urilor politicienilor. IMPORTANT: Google Books are coverage limitată pentru cărți politice românești pre-2010 (multe ediții ANL, Lider, Mondoro lipsesc). `found: false` NU dovedește că o carte nu există, doar că Google n-o are indexată. Pentru o concluzie sigură, încearcă și webSearch("titlu" autor) sau caută în biblioteca.bcub.ro / libraria.net | ✔ live |
getDiasporaResults | Rezultate electorale din diaspora pe țări. Necesită ID-ul alegerilor (ballotId) | ✔ live |
getPartyWealthSummary | Sumar agregat de avere pe partid (cross-MP rollup). Returnează { party, legislature, match_mode, mp_count, real_estate: { total_area_sqm, mps_with_property, avg/median sqm, top_holders[5] }, loans: { total_amount_ron, mps_with_loans, top_debtors[5] }, income: { total_declared_ron, mps_with_income, avg_per_mp_ron, top_earners[5] } }. Folosește pentru întrebări de tip "câte hectare are PSD în total" / "care e averea cumulată AUR" / chart generation pe wealth landscape per partid. Default legislature = 2024-2028. Parametrul match_mode controlează cum se rezolvă apartenența: "current" (default, party_current ?? party_at_start, MP-urile migrate la POT/SOS NU mai sunt numărate ca AUR) vs "at_start" (party_at_start, cine a venit pe lista partidului, inclusiv cei care au plecat). Pentru responsabilitate electorală AUR/USR, folosește "at_start"; pentru curent floor cohort, folosește "current" | ✔ live |
getFlaggedUniversitiesTop | Top universități cu probleme de acreditare (diploma mills): câți MP au studiat la fiecare. Cross-MP rollup. Returnează { total_universities, total_flagged_mps, universities: [{ name, flag_reason, mp_count, party_distribution: {PSD: N, PNL: N, ...} (peste TOATE MP-urile, nu doar sample, folosește pentru stacked bar chart universitate × partid fără fan-out), sample_mps[5]: [{mp_id, full_name, party, chamber, degree, field}] (5 exemple nominale pentru narrative) }] } sortat desc după mp_count. Default limit 10, max 30 | ✔ live |
getConflictsSummary | Sumar agregat conflicte de interese SEAP (cross-MP rollup). Filter opțional pe partid. Returnează { party (sau null), aggregate: { total_conflicts, by_severity {critical,high,medium,low}, total_contract_value_ron, distinct_suppliers, distinct_mps }, top_suppliers[10] (sortat după total_value_ron): [{ supplier_name, mp_count, contract_count, total_value_ron, parties_count, parties[] }], top_suppliers_by_party_diversity[10] (sortat după parties_count desc, pentru "ce furnizor apare la cele mai multe partide diferite"), top_mps[10]: [{ mp_id, full_name, party, conflict_count, total_value_ron, max_severity }], by_party (doar când nu filtrezi pe partid) }. Folosește pentru "care partid are cele mai mari conflicte" / "ce furnizor SEAP apare la mai mulți MP" / chart generation | ✔ live |
webSearch | Caută live pe web (default RO, ro-RO) pentru subiecte care NU sunt în baza noastră de parlamentari: jurnaliști, oameni de afaceri, funcționari publici non-aleși (prefecți, secretari de stat, șefi cabinete), comentatori TV, dosare DNA recente, scandaluri curente. Returnează `{ query, count, results: [{ title, url, description, age, source }], fetched_at }`. Folosește pentru "ce s-a scris despre X recent", "cine e X" pentru non-MP, sau pentru a verifica afirmații din videoclipuri/declarații. Filtru `freshness`: pd (ultima zi), pw (ultima săptămână), pm (ultima lună), py (ultimul an) | roadmap |
getMandateHistory | Istoricul mandatelor unui parlamentar (2008-prezent). Returnează { mp, aggregate: { total_mandates, total_years, by_chamber: { deputat, senator }, by_party (count per partid curent), party_migrations_count (de câte ori party_current ≠ party_at_start), first_mandate, current_mandate }, mandates: [{ legislature, chamber, start_date, end_date, end_reason, party_at_start, party_current, county, source_url }] sortat desc după legislatură, sources }. Util pentru traiectoria politică: comutări cameră, migrări partid, total ani serviți | ✔ live |
getMPsByLegislature | DISCOVERY cross-MP: roster parlamentari activi într-o legislatură istorică. "Cine erau MP-urile PSD în 2012?". Returnează { count, total_matches, by_chamber: { deputat, senator }, by_party (count pre-limit, util pentru landscape politic), results: [{ mp, legislature, chamber, start_date, end_date, party_at_start, party_current, county, source_url }] }. Sortare: chamber, party, nume. Acoperire 2008-2028 | ✔ live |
searchMagistrates | Caută magistrați (judecători și procurori) din România după nume, rol (judecator|procuror), sau instanță. Returnează rezumat cu nume, funcție, instanță, număr declarații ANI disponibile. NU returnează caracterizări; doar fapte + surse | ✔ live |
getMagistrateProfile | Returnează profilul complet al unui magistrat: funcția curentă, instanța, declarațiile ANI pe toți anii (link la PDF). NU include date personale (adresă, telefon, familie). Folosește după searchMagistrates pentru a obține un ID | ✔ live |
getPublicOfficialWealth | Declarații de avere/interese ANI pentru un oficial public care NU e parlamentar sau magistrat (primar, președinte CJ, ministru, premier desemnat, ex. Adrian Veștea). DOAR persoane de interes public (demnitari/aleși/șefi de instituții), nu funcționari oarecare. Returnează { found, status, official?: { full_name, context, declarations[]: { year, type, pdf_url, archive_url }, legal_disclaimer } } sau, la cache-miss, { found:false, status:"requested", note }. NU inventa cifre: dacă status=requested, spune că persoana nu e încă ingerată și trimite la PDF-urile publice ANI. Necesită doar numele | roadmap |
reportDataError | Raportează o valoare GREȘITĂ întoarsă de un tool anterior. Cheamă acest tool când utilizatorul spune că o dată e greșită. IMPORTANT: completează `tool_name` și `tool_args` din apelul de tool IMEDIAT PRECEDENT din contextul tău. NU întreba utilizatorul de ele. Cere-i doar ce e greșit și, opțional, valoarea corectă + o sursă oficială. Acest tool NU citește și NU modifică date, doar înregistrează raportul pentru verificare umană. Confirmă utilizatorului numărul raportului întors | ✔ live |
getPartyDonors | Donatori ai unui partid din raportările oficiale (BaniPartide.ro, agregare a datelor AEP). Întoarce { individuals: [...], companies: [...] }. Folosește pentru „cine finanțează partidul X", „ce firme au donat", „a donat firma Y unui partid". Filtrează după partid și/sau an; poți căuta și un donator anume după nume (persoană) sau CUI (firmă). Datele sunt din raportări publice, nu sunt acuzații | roadmap |
searchMediaOwners | Proprietari de instituții media din registrul CNA. Caută după numele publicației (query) SAU după numele proprietarului (owner) ca să vezi ce media deține o persoană. Folosește pentru „cine deține publicația X", „ce televiziuni are Y", „are politicianul Z media". Întoarce lista de instituții cu proprietarii declarați | roadmap |
getWealthAcquiredInMandate | Cât din averea imobiliară declarată a fost dobândită ÎN TIMPUL mandatului, nu înainte. Stocul spune cine e bogat, delta spune ce s-a întâmplat cât a avut putere publică, deci pentru „s-a îmbogățit în mandat?" folosește ACEST tool, nu getMPRealEstate. Fără argumente dă imaginea pe tot Parlamentul, de la intrarea fiecăruia. Cu `legislature` (ex. "2020-2024") dă exact fereastra aceea, varianta comparabilă cu studiile publicate. Poate fi restrâns la un parlamentar (`mpId`, obținut din searchMPs) sau la un partid. Rezultatul conține MEREU acoperirea (câți parlamentari, câte rânduri excluse): citează-o, pentru că datele acoperă parlamentarii în funcție, nu istoricii. Suprafețele sunt ponderate implicit pe cota-parte declarată, altfel coproprietatea umflă totalul cu ~25% | ✔ live |
getElectionBallots | Lista scrutinelor electorale disponibile, cu ballotId, titlu și dată. CHEAMĂ ACEST TOOL ÎNAINTE de getDiasporaResults, ca să afli un ballotId valid — nu ghici id-ul și nu-l căuta pe web. Filtrează opțional doar prezidențialele | roadmap |
searchMPs✔ liveCaută parlamentari. Cel puțin unul din `query` (nume parțial, order-independent, diacritic-stripped) sau `educationFlagged=true` trebuie dat: fără niciun filtru lista e goală (evită dump-ul întregului parlament). Returnează id, nume, party (curent, null pentru MP-uri inactive), last_party (din mandatul cel mai recent, prezent și pentru inactivi), cameră, județ, mandate_count, legislatures[], first_mandate, current_mandate + sources[] (URL-uri cdep.ro/senat.ro per mandat, pentru verificare/citare). Folosește last_party pentru a evita inventarea partidului la MP-uri istorice cu party=null. Combină filtrele: query + educationFlagged = MP-uri care satisfac AMBELE. Parametrul slim (default false) ascunde sources[] și reduce payload-ul la ~50 chars/row. Folosește când vrei toți cei 76 MP-uri flagged într-un singur call (sources le poți cere la nevoie cu un follow-up)
getMPLoans✔ liveReturnează profilul de împrumuturi al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, total_amount_ron, items: [{ section, creditor, loan_type, amount, currency, contract_year, maturity_date, raw_text, needs_ocr, source_idx }] }, trajectory: [{ year, count, total_amount_ron, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count / snapshot.total_amount_ron pentru situația curentă. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași datorii. Parametrul opțional year alege anul pentru snapshot
getMPDivestedAssets✔ liveReturnează bunurile înstrăinate (vândute) de un parlamentar ca listă de evenimente: { mp, count, total_ron, events: [{ asset_nature, divestment_date, buyer, divestment_form, amount, currency, declaration_year, source_idx }], sources }. events = lista cronologică (cea mai recentă întâi) de vânzări distincte. O vânzare re-declarată în mai mulți ani e numărată o singură dată. count și total_ron rezumă evenimentele
getMPIncome✔ liveReturnează profilul de venituri al unui parlamentar, axat pe evoluție: { mp, trajectory: [{ year, total_ron, count, filings }], snapshot: { year, total_ron, items: [{ income_category, family_member, source_name, service_description, annual_amount, currency, source_idx }] }, total_declared_ron, available_years, sources }. trajectory = venitul declarat per an (vederea principală, venitul e un flux anual). snapshot = anul cel mai recent. total_declared_ron = suma venitului declarat pe toți anii. Numele persoanelor sunt omise (GDPR). Parametrul opțional year alege anul pentru snapshot
getMPRealEstate✔ liveReturnează profilul imobiliar al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, total_area_sqm, items: [{ asset_type, category, judet, area_sqm, share, acquisition_mode, acquisition_year, source_idx }] }, trajectory: [{ year, count, total_area_sqm, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count / snapshot.total_area_sqm pentru ce deține persoana acum. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași proprietăți persistente. Parametrul opțional year alege anul pentru snapshot
getMPVehicles✔ liveReturnează profilul de vehicule al unui parlamentar ca instantaneu + evoluție: { mp, snapshot: { year, count, items: [{ vehicle_type, brand, quantity, year_of_manufacture, acquisition_mode, source_idx }] }, trajectory: [{ year, count, filings }], available_years, sources }. snapshot = declarația cea mai recentă. Folosește snapshot.count pentru câte vehicule deține persoana acum. trajectory = un rând per an de declarație. NU însuma rândurile, fiecare an re-declară aceleași vehicule. Vehiculele nu au un total numeric. Parametrul opțional year alege anul pentru snapshot
getActivityMPProfile✔ liveDISCOVERY tool: arată cât de activ e un parlamentar: { votes_count, speeches_count, proposals_count, questions_count, years[] }. NU date efective. După acest call, pentru DATE folosește getMPVotes/getMPSpeeches/getMPProposals/getMPQuestions cu mpId + (opțional) year. Cere mpId din searchMPs
getMPVotes✔ liveVoturile unui SINGUR parlamentar (plen, mandat 2024-2028). Returnează { mp, count, top: [vote_date, subject, vote (DA/NU/Abtinere/...), vote_url] }. top[] plafonat la cele mai recente; dacă count > top.length, filtrează cu year. Necesită mpId din searchMPs
getMPSpeeches✔ liveSesiunile la care un SINGUR parlamentar (mandat 2024-2028) a fost prezent la podium. Returnează { mp, count, top: [session_date, session_id, topic, stenogram_url] }. IMPORTANT: scraper-ul nostru captează doar PREZENȚA la sesiune (data + topic generic „Stenograma Şedinţei Senatului/Camerei din data de X"), NU subiectele individuale ale luărilor de cuvânt. Pentru transcript ce a spus efectiv MP-ul, trimite user la senat.ro/Voturi sau cdep.ro/stenograme pentru data respectivă. session_id și stenogram_url sunt frecvent null pentru senatori (gap în sursa primară). Filtrează cu year pentru rest. Necesită mpId
getMPProposals✔ livePropunerile legislative inițiate de un SINGUR parlamentar (mandat 2024-2028). Returnează { mp, count, top: [registration_number, registration_date, senate_number, title, status, is_law, cdep_url] }. top[] plafonat; filtrează cu year pentru rest. Necesită mpId din searchMPs
getMPQuestions✔ liveÎntrebările și interpelările unui SINGUR parlamentar (mandat 2024-2028). Returnează { mp, count, top: [question_date, addressee, title, question_type (intrebare/interpelare), cdep_url] }. top[] plafonat; filtrează cu year pentru rest. Necesită mpId din searchMPs
searchSubsistenceAnomalies✔ liveDISCOVERY cross-MP: parlamentari cu test de subzistență suspect (venit declarat raportat la mărimea familiei). Returnează { count, total_matches, severe_count, critical_count, results: [{ mp: {id, full_name, party, chamber, county}, year, year_income_ron, family_size, daily_per_person_ron, severity }] } sortat asc după daily_per_person_ron (cei mai suspecți primii). Filtre: severity (default "severe" = severe+critical), year (opțional, restrânge la un an), party (opțional), limit (default 25, max 100). Apoi cheamă getMPSubsistence(mpId) pentru detaliu pe traiectorie + getMPIncome pentru declarația brută
searchIncomeVsAcquisitionAnomalies✔ liveDISCOVERY cross-MP: parlamentari cu anomalii venit-vs-achiziții (au cumpărat imobile cu venit declarat zero/redus față de distribuția proprie). Returnează { count, total_matches, results: [{ mp, year, year_income_ron, acquisitions_count, total_acquired_sqm, anomaly_score (0-100), no_income_data }] } sortat desc după anomaly_score. Filtre: minScore (default 60 = anomalii clare), party, limit (default 25, max 100). Apoi cheamă getMPIncomeVsAcquisitions(mpId) + getMPLoans pentru a verifica dacă achiziția a fost finanțată prin împrumut
getMPSubsistence✔ liveTestul de subzistență per parlamentar: venitul declarat raportat la mărimea inferată a familiei (titular + soț/soție + copii), per an. Returnează { mp, trajectory: [{ year, year_income_ron, family_size, daily_per_person_ron, severity }], worst: { year, severity, daily_per_person_ron } | null, has_severe, available_years, sources }. severity: critical (<20 RON/zi/persoană), severe (<50), warning (<100), ok (≥100). has_severe=true e semnal anticorupție-cheie (declarații imposibil de mici pentru câți membri are familia). Euristic: family_size se infereaza, NU dovedește îmbogățire neexplicată; ridică suspiciuni pentru verificare
getMPIncomeVsAcquisitions✔ liveAnomalii venit-vs-achiziții per parlamentar: anii în care a achiziționat imobile cu venit declarat zero/redus față de distribuția proprie. Returnează { mp, anomalies: [{ year, year_income_ron, acquisitions_count, total_acquired_sqm, anomaly_score (0-100), no_income_data }], max_score, has_anomaly, sources }. has_anomaly=true cu max_score≥60 e semnal anticorupție-cheie (achiziții fără sursă declarată). Euristic: agentul trebuie să verifice împrumuturi/bunuri instrăinate înainte de a concluziona; ridică suspiciuni pentru verificare
getMPConflicts✔ liveConflicte de interese per parlamentar: firme care apar în declarațiile MP-ului (sursă venit / investiție / cumpărător activ înstrăinat / creditor) ȘI au câștigat contracte publice prin SEAP. Returnează { mp, aggregate, conflicts: [{ supplier_name, supplier_cui, declaration_source, declaration_value, family_member, contract_count, total_contract_value_ron, date_range, match_type, match_score, severity, conflict_score, homonym_with?, judet?, most_likely_for_mp? }], sources, homonym_warning? }. Ordonat desc după conflict_score. critical (≥100) = semnal anticorupție-cheie
getCompanyDataroadmapDate despre o FIRMĂ românească după CUI, din Registrul Comerțului + ANAF (sursă: FirmeAPI). Folosește DUPĂ getMPConflicts pentru a închide bucla de conflict: ia supplier_cui al unei firme-furnizor SEAP și află CINE O CONDUCE. Returnează { cui, company_name, status, inactive, caen, administrators, anaf_debts, court_cases, financials, insolvency, mof, branches, arr_licenses, alt_transport_licenses, fetched_parts, matches?, source }. Dacă dai mpName, matches[] marchează administratorii care se potrivesc cu MP-ul: "exact_mp" sau "same_surname" (commonSurname=true = nume comun, de verificat, NU dovadă). NU inventa proprietari. GDPR: doar nume+funcție publice, fără CNP
getCompanyFiscalStatus✔ liveStatus fiscal CURENT (azi) al unei firme românești după CUI, direct din serviciul web ANAF (v9/tva, anonim, gratuit). Returnează { cui, queryDate, found, name, registrationStatus, caen, isInactive, inactiveSince, reactivatedAt, vatRegistered, vatCancellationReason, vatSince, vatAtCash, splitVat, roEFactura, source }.
searchSEAPContracts✔ liveCaută contracte publice SEAP/SICAP romanesti (slice 2020-2024, ~126k contracte din opentender + cateva din data.gov.ro). Filtre opționale: supplier_name (ILIKE partial match), authority_name (ILIKE), supplier_cui (exact), authority_cui (exact), date_from, date_to (ISO YYYY-MM-DD), min_value (RON), limit (default 50, max 200). Returnează { filters, count, total_value_ron, truncated, contracts[], source }
draftFOIARequest✔ liveGenerează draft pentru cerere oficială Lege 544/2001 (liberul acces la informații de interes public) către o instituție publică românească. Tool-ul asigură formatul legal corect: invocă explicit Legea 544/2001 art. 5+6 (evită reclasificarea ca „petiție" cu termen 45 zile), include reminder pentru art. 7 (termen 10 zile calendaristice), calculează deadlines automat, returnează calea de apel (plângere prealabilă + contencios administrativ)
searchLegislation✔ liveCaută LEGI / HOTĂRÂRI DE GUVERN / DECIZII / ORDONANȚE după titlu pe portalul oficial al Ministerului Justiției (legislatie.just.ro). FREE, redistribuibil. Returnează { query, count, results: [{ docId, type, number, date, raw_title, url }] }. Folosește pentru a găsi docId-ul actului relevant, apoi cheamă getLegislation(docId, article?) pentru textul efectiv. EXEMPLE de query bun: „Lege 161 2003" (găsește Legea 161/2003), „Lege 176 2010" (Legea ANI), „Cod Penal", „Cod Civil". Title search e literal: folosește cuvinte-cheie din titlul oficial al actului
getLegislation✔ liveReturnează textul unui act normativ românesc după docId (din searchLegislation). Sursă: legislatie.just.ro (Ministerul Justiției, oficial). Returnează { docId, title, type, number, date_signed, text, article_match?, url }. Dacă dai `article`, extrage doar acel articol din text (mult mai compact decât întregul act care poate avea 100k+ caractere). Folosește IMPERATIV pentru a CITA articole legale în răspunsuri despre conflicte / incompatibilități / sancțiuni. Niciodată invenția unui articol fără fetch. Pentru parlamentari care administrează firme private: Legea 161/2003 art. 82 (docId 43323). Pentru membri Guvern: art. 84 din aceeași lege. Pentru sancțiuni ANI: Legea 176/2010
searchCNSAS✔ liveCaută verdicte publice CNSAS / colaborare Securitate pe numele unei persoane (relevant pentru parlamentari născuți pre-1970). Sursă: agregare publice din `monitoruloficial.ro` (verdicte oficiale, Lege 187/1999 obligație), `cnsas.ro/comunicate` (când e indexat Google), `memoria.ro` (oral history Securitate), plus presă majoră (HotNews, G4Media, Digi24, Libertatea, Europa Liberă). Returnează { name, total, hits: [{ title, url, description, source_category }], source_breakdown, legal_note }. `source_category`: `official_cnsas` / `official_monitor` (cele mai puternice ca dovadă) > `oral_history` > `press_major` > `press_other`. NU returnăm conținut din dosare confidențiale: datele sunt special category Art 9 GDPR, baza legală e interes public jurnalistic. Folosește IMPERATIV pentru întrebări de tip „are X dosar Securitate?", „a fost colaborator?", „verdict CNSAS pentru Y?". NU porni cu webSearch generic: searchCNSAS e mult mai precis pe surse oficiale. Atenție omonimie: numele comune întorc rezultate amestecate; cere agentului să citeze sursele explicit
searchCourtCasesroadmapCaută dosare juridice deschise pe numele unei persoane în 246 instanțe românești: 15 curți de apel + 1 curte militară + 51 tribunale (incl. 5 militare) + 179 judecătorii. Sursă: portal.just.ro (Ministerul Justiției, SOAP CautareDosare, oficial + gratuit). Returnează { name, total, by_court, by_category, cases: [{ numar_dosar, data, obiect_category, obiect_redacted?, institutie, stadiu, other_parties_count }], coverage_warning, courts_total, courts_succeeded, unavailable_count, source, fromCache, cachedAt }. GDPR: numele celorlalte părți sunt MASCATE (doar `other_parties_count`); obiectele FAMILIE/MINOR redactate la categorie. PRIMA execuție: 20-90s (concurrency 10, per-court timeout 10s, hard cap global 90s). Cache 7 zile → <50ms după. ÎCCJ NU e acoperită (sistem separat scj.ro, defer v2). „0 dosare" + courts_succeeded=246 = nu există în niciuna din 246 instanțe (dar nu și ÎCCJ). Dacă unavailable_count > 0, citează coverage_warning și menționează că acoperirea e parțială. OMONIMIE CRITICĂ: 246-instanță search pe „Ion Popescu" întoarce mii de dosare amestecate de la zeci de persoane diferite. Pentru un MP, returnează doar agregatul + warning explicit că nu se pot atribui dosarele fără verificare CNP/adresă (care lipsesc din GDPR)
getMPEducation✔ liveReturnează educația unui parlamentar cu marcaje pentru universități suspecte ("diploma mills"). Întoarce { mp, education: [{ institution, degree, field, flagged, flag_reason, flagged_university_name }], flag_count, sources }. flag_count > 0 e semnalul anticorupție-cheie (diplomă de la universitate marcată). Pentru a găsi MP-uri marcate fără nume specific, folosește searchMPs cu educationFlagged=true
getConflictFlags✔ liveConflicte de interese SEAP: firme din declarații care apar și ca furnizori în contracte publice. Filtrabile după partid, severitate, nume
getEurostatData✔ liveDate statistice Eurostat pentru comparații UE: șomaj, PIB, salarii minime. Geo: RO, EU27_2020, DE, FR, etc
verifyBook✔ liveVerifică dacă o carte cu un anumit titlu și autor există în Google Books. Util pentru verificarea CV-urilor politicienilor. IMPORTANT: Google Books are coverage limitată pentru cărți politice românești pre-2010 (multe ediții ANL, Lider, Mondoro lipsesc). `found: false` NU dovedește că o carte nu există, doar că Google n-o are indexată. Pentru o concluzie sigură, încearcă și webSearch("titlu" autor) sau caută în biblioteca.bcub.ro / libraria.net
getDiasporaResults✔ liveRezultate electorale din diaspora pe țări. Necesită ID-ul alegerilor (ballotId)
getPartyWealthSummary✔ liveSumar agregat de avere pe partid (cross-MP rollup). Returnează { party, legislature, match_mode, mp_count, real_estate: { total_area_sqm, mps_with_property, avg/median sqm, top_holders[5] }, loans: { total_amount_ron, mps_with_loans, top_debtors[5] }, income: { total_declared_ron, mps_with_income, avg_per_mp_ron, top_earners[5] } }. Folosește pentru întrebări de tip "câte hectare are PSD în total" / "care e averea cumulată AUR" / chart generation pe wealth landscape per partid. Default legislature = 2024-2028. Parametrul match_mode controlează cum se rezolvă apartenența: "current" (default, party_current ?? party_at_start, MP-urile migrate la POT/SOS NU mai sunt numărate ca AUR) vs "at_start" (party_at_start, cine a venit pe lista partidului, inclusiv cei care au plecat). Pentru responsabilitate electorală AUR/USR, folosește "at_start"; pentru curent floor cohort, folosește "current"
getFlaggedUniversitiesTop✔ liveTop universități cu probleme de acreditare (diploma mills): câți MP au studiat la fiecare. Cross-MP rollup. Returnează { total_universities, total_flagged_mps, universities: [{ name, flag_reason, mp_count, party_distribution: {PSD: N, PNL: N, ...} (peste TOATE MP-urile, nu doar sample, folosește pentru stacked bar chart universitate × partid fără fan-out), sample_mps[5]: [{mp_id, full_name, party, chamber, degree, field}] (5 exemple nominale pentru narrative) }] } sortat desc după mp_count. Default limit 10, max 30
getConflictsSummary✔ liveSumar agregat conflicte de interese SEAP (cross-MP rollup). Filter opțional pe partid. Returnează { party (sau null), aggregate: { total_conflicts, by_severity {critical,high,medium,low}, total_contract_value_ron, distinct_suppliers, distinct_mps }, top_suppliers[10] (sortat după total_value_ron): [{ supplier_name, mp_count, contract_count, total_value_ron, parties_count, parties[] }], top_suppliers_by_party_diversity[10] (sortat după parties_count desc, pentru "ce furnizor apare la cele mai multe partide diferite"), top_mps[10]: [{ mp_id, full_name, party, conflict_count, total_value_ron, max_severity }], by_party (doar când nu filtrezi pe partid) }. Folosește pentru "care partid are cele mai mari conflicte" / "ce furnizor SEAP apare la mai mulți MP" / chart generation
webSearchroadmapCaută live pe web (default RO, ro-RO) pentru subiecte care NU sunt în baza noastră de parlamentari: jurnaliști, oameni de afaceri, funcționari publici non-aleși (prefecți, secretari de stat, șefi cabinete), comentatori TV, dosare DNA recente, scandaluri curente. Returnează `{ query, count, results: [{ title, url, description, age, source }], fetched_at }`. Folosește pentru "ce s-a scris despre X recent", "cine e X" pentru non-MP, sau pentru a verifica afirmații din videoclipuri/declarații. Filtru `freshness`: pd (ultima zi), pw (ultima săptămână), pm (ultima lună), py (ultimul an)
getMandateHistory✔ liveIstoricul mandatelor unui parlamentar (2008-prezent). Returnează { mp, aggregate: { total_mandates, total_years, by_chamber: { deputat, senator }, by_party (count per partid curent), party_migrations_count (de câte ori party_current ≠ party_at_start), first_mandate, current_mandate }, mandates: [{ legislature, chamber, start_date, end_date, end_reason, party_at_start, party_current, county, source_url }] sortat desc după legislatură, sources }. Util pentru traiectoria politică: comutări cameră, migrări partid, total ani serviți
getMPsByLegislature✔ liveDISCOVERY cross-MP: roster parlamentari activi într-o legislatură istorică. "Cine erau MP-urile PSD în 2012?". Returnează { count, total_matches, by_chamber: { deputat, senator }, by_party (count pre-limit, util pentru landscape politic), results: [{ mp, legislature, chamber, start_date, end_date, party_at_start, party_current, county, source_url }] }. Sortare: chamber, party, nume. Acoperire 2008-2028
searchMagistrates✔ liveCaută magistrați (judecători și procurori) din România după nume, rol (judecator|procuror), sau instanță. Returnează rezumat cu nume, funcție, instanță, număr declarații ANI disponibile. NU returnează caracterizări; doar fapte + surse
getMagistrateProfile✔ liveReturnează profilul complet al unui magistrat: funcția curentă, instanța, declarațiile ANI pe toți anii (link la PDF). NU include date personale (adresă, telefon, familie). Folosește după searchMagistrates pentru a obține un ID
getPublicOfficialWealthroadmapDeclarații de avere/interese ANI pentru un oficial public care NU e parlamentar sau magistrat (primar, președinte CJ, ministru, premier desemnat, ex. Adrian Veștea). DOAR persoane de interes public (demnitari/aleși/șefi de instituții), nu funcționari oarecare. Returnează { found, status, official?: { full_name, context, declarations[]: { year, type, pdf_url, archive_url }, legal_disclaimer } } sau, la cache-miss, { found:false, status:"requested", note }. NU inventa cifre: dacă status=requested, spune că persoana nu e încă ingerată și trimite la PDF-urile publice ANI. Necesită doar numele
reportDataError✔ liveRaportează o valoare GREȘITĂ întoarsă de un tool anterior. Cheamă acest tool când utilizatorul spune că o dată e greșită. IMPORTANT: completează `tool_name` și `tool_args` din apelul de tool IMEDIAT PRECEDENT din contextul tău. NU întreba utilizatorul de ele. Cere-i doar ce e greșit și, opțional, valoarea corectă + o sursă oficială. Acest tool NU citește și NU modifică date, doar înregistrează raportul pentru verificare umană. Confirmă utilizatorului numărul raportului întors
getPartyDonorsroadmapDonatori ai unui partid din raportările oficiale (BaniPartide.ro, agregare a datelor AEP). Întoarce { individuals: [...], companies: [...] }. Folosește pentru „cine finanțează partidul X", „ce firme au donat", „a donat firma Y unui partid". Filtrează după partid și/sau an; poți căuta și un donator anume după nume (persoană) sau CUI (firmă). Datele sunt din raportări publice, nu sunt acuzații
searchMediaOwnersroadmapProprietari de instituții media din registrul CNA. Caută după numele publicației (query) SAU după numele proprietarului (owner) ca să vezi ce media deține o persoană. Folosește pentru „cine deține publicația X", „ce televiziuni are Y", „are politicianul Z media". Întoarce lista de instituții cu proprietarii declarați
getWealthAcquiredInMandate✔ liveCât din averea imobiliară declarată a fost dobândită ÎN TIMPUL mandatului, nu înainte. Stocul spune cine e bogat, delta spune ce s-a întâmplat cât a avut putere publică, deci pentru „s-a îmbogățit în mandat?" folosește ACEST tool, nu getMPRealEstate. Fără argumente dă imaginea pe tot Parlamentul, de la intrarea fiecăruia. Cu `legislature` (ex. "2020-2024") dă exact fereastra aceea, varianta comparabilă cu studiile publicate. Poate fi restrâns la un parlamentar (`mpId`, obținut din searchMPs) sau la un partid. Rezultatul conține MEREU acoperirea (câți parlamentari, câte rânduri excluse): citează-o, pentru că datele acoperă parlamentarii în funcție, nu istoricii. Suprafețele sunt ponderate implicit pe cota-parte declarată, altfel coproprietatea umflă totalul cu ~25%
getElectionBallotsroadmapLista scrutinelor electorale disponibile, cu ballotId, titlu și dată. CHEAMĂ ACEST TOOL ÎNAINTE de getDiasporaResults, ca să afli un ballotId valid — nu ghici id-ul și nu-l căuta pe web. Filtrează opțional doar prezidențialele
Vrei un tool specific deblocat prioritar? Email: menționează tool-ul + use case.
O comandă. Browser-ul deschide singur consent screen Google. Token stocat automat. Nu mai vezi nimic. Același pattern ca Notion, Figma sau Monday MCP. Tot procesul ia ~1 minut.
Investigator agregă declarațiile de avere ANI ale celor peste 1.690 de parlamentari (2008–prezent): venituri, proprietăți, vehicule, împrumuturi, bunuri vândute, fiecare cu link către PDF-ul oficial de pe cdep.ro / senat.ro. Întrebi în limba română, direct din Claude, ChatGPT sau din agentul din browser.
Unealta detectează automat firmele care apar în declarațiile de avere ale unui parlamentar și, în același timp, ca furnizori în contracte publice SEAP, cu scoruri de severitate, cu CUI-uri și valori de contract pentru verificare.
Da. Acordăm acces complet gratuit pentru ONG-uri civice, activiști, cercetători și jurnaliști independenți, prin email, de la caz la caz. Abonamentele Pro subvenționează accesul gratuit; produsul nu e făcut pentru profit.
Declarații de avere ANI (parlamentari + 6.776 magistrați), contracte publice SEAP/SICAP, dosare de justiție (portal.just.ro), verdicte CNSAS, legislație oficială, plus semnale anticorupție calculate: anomalii venit-vs-achiziții, test de subzistență, conflicte de interese.
Datele sunt extrase automat din zeci de mii de documente publice, deci acuratețea e best-effort. Pot exista erori de extracție. De aceea fiecare rezultat include link către documentul-sursă oficial, ca să verifici tu însuți, iar dacă găsești o greșeală o poți semnala pe loc din chat (butonul 🚩). Regula de aur: verifică mereu cu sursa înainte de a publica.