Beta · 36 unelte live

Unelte moderne
pentru jurnalismul anti-corupție din România

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 →

Conectează-te laClaude Code
Autentificare

Nu e un site pe care cauți. E o bază pe care o dai AI-ului tău.

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.

mai mult context și unelte

Conectează-l în AI-ul pe care-l folosești deja

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.

Nu folosești un asistent AI? Începe din browser.

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.

Încearcă acum

Vezi MCP-ul în acțiune

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ă).

Se încarcă demo chat...
Deschide chatul complet

Cu istoric salvat și instrucțiuni permanente pentru agent.

Date pre-procesate

Declarații avere extrase automat din PDF-uri. Conflicte SEAP detectate. Sinecure cumulate. Risk scores. Zero scraping pentru tine.

Cache-first

Fiecare call check cache (TTL per tool: 1h-30zi). Hit = sub 50ms, zero cost upstream. Te scutește de rate-limits și fees.

OAuth 2.1 standard

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.

Tarife

Lunar, fără contract pe termen lung. Anulează oricând.

Cache-only / explorare

Free

0/lună
  • 100 requests/luna
  • Doar rezultate din cache (fara apeluri proaspete)
  • Toate tool-urile MCP disponibile (read-only)
  • Pentru: explorare initiala din clientul tau AI, dezvoltatori care testeaza
Autentificare cu Google
Subvenționează accesul gratuit

Pro

29/lună
  • 1.000 requests/luna, fresh crawls included
  • Toate tool-urile MCP
  • Email support
  • Cota mai mare? Scrie email pentru pachet personalizat
  • Agent AI găzduit inclus: 300 mesaje/lună, fără să-ți aduci propriul Claude sau ChatGPT
  • Sau conectează propriul client AI (Claude / ChatGPT / Cursor) prin MCP: orice model, inferența pe abonamentul tău AI (aceleași 1.000 de cereri/lună)

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.

Ce poate interoga: 36 unelte live

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ă:

Avere declarată

Venituri, imobiliare, vehicule, împrumuturi, bunuri vândute, extrase din PDF-urile ANI ale fiecărui parlamentar.

Conflicte de interese

Firme din declarații care apar ca furnizori în contracte publice SEAP, cu scoruri de severitate.

Activitate parlamentară

Voturi, discursuri, întrebări, inițiative legislative, prezență, per parlamentar sau per legislatură.

Magistrați

6.776 de judecători și procurori, cu declarațiile lor ANI din 2008 încoace.

Istorie & context

Verdicte CNSAS, istoricul mandatelor din 2008-prezent, universități cu probleme de acreditare, date Eurostat.

Anomalii & semnale

Discrepanțe venit-achiziții, diurne de subzistență atipice, sumar de avere pe partid.

Lista completă a uneltelor (36 live), referință tehnică

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.

  • searchMPs✔ live

    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)

  • getMPLoans✔ live

    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

  • getMPDivestedAssets✔ live

    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

  • getMPIncome✔ live

    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

  • getMPRealEstate✔ live

    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

  • getMPVehicles✔ live

    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

  • getActivityMPProfile✔ live

    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

  • getMPVotes✔ live

    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

  • getMPSpeeches✔ live

    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

  • getMPProposals✔ live

    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

  • 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✔ live

    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ă

  • searchIncomeVsAcquisitionAnomalies✔ live

    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

  • getMPSubsistence✔ live

    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

  • getMPIncomeVsAcquisitions✔ live

    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

  • getMPConflicts✔ live

    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

  • getCompanyDataroadmap

    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

  • getCompanyFiscalStatus✔ live

    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 }.

  • searchSEAPContracts✔ live

    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 }

  • draftFOIARequest✔ live

    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)

  • searchLegislation✔ live

    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

  • getLegislation✔ live

    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

  • searchCNSAS✔ live

    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

  • searchCourtCasesroadmap

    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)

  • getMPEducation✔ live

    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

  • getConflictFlags✔ live

    Conflicte de interese SEAP: firme din declarații care apar și ca furnizori în contracte publice. Filtrabile după partid, severitate, nume

  • getEurostatData✔ live

    Date statistice Eurostat pentru comparații UE: șomaj, PIB, salarii minime. Geo: RO, EU27_2020, DE, FR, etc

  • verifyBook✔ live

    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

  • getDiasporaResults✔ live

    Rezultate electorale din diaspora pe țări. Necesită ID-ul alegerilor (ballotId)

  • getPartyWealthSummary✔ live

    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"

  • getFlaggedUniversitiesTop✔ live

    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

  • getConflictsSummary✔ live

    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

  • webSearchroadmap

    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)

  • getMandateHistory✔ live

    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

  • getMPsByLegislature✔ live

    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

  • searchMagistrates✔ live

    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

  • getMagistrateProfile✔ live

    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

  • getPublicOfficialWealthroadmap

    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

  • reportDataError✔ live

    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

  • getPartyDonorsroadmap

    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

  • searchMediaOwnersroadmap

    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

  • getWealthAcquiredInMandate✔ live

    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%

  • getElectionBallotsroadmap

    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

Vrei un tool specific deblocat prioritar? Email: menționează tool-ul + use case.

Cum se conectează

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.

Înainte să pornești

  • ·Un client MCP cu CLI: Claude Code sau Gemini CLI (instrucțiuni mai jos pentru ambele, ~3 min instalarea).
  • ·Cont Google (orice: Gmail personal e suficient). Folosit doar pentru autentificare; nu citim/scriem nimic în workspace-ul tău.
  • ·Acces la terminal: pe Mac e "Terminal" (Cmd+Space → tastează Terminal); pe Windows e "PowerShell" sau "Terminal" din Start menu; pe Linux orice shell.

Întrebări frecvente

Cum verific declarația de avere a unui parlamentar român?

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.

Cum găsesc conflicte de interese între parlamentari și contracte SEAP?

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.

Este gratuit pentru jurnaliști și ONG-uri?

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.

Ce surse de date acoperă?

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.

Cât de exacte sunt datele? Pot conține erori?

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.