get_accusation
ChatGPTReturns full accusation document — legal basis, description, and referenced pages from the indictment.
get_accusation
ChatGPTReturns full accusation document — legal basis, description, and referenced pages from the indictment.
get_accusations_vs_defense
ChatGPTCross-cutting iddia (accusation) ↔ savunma (defense) map — the canonical aggregate for any 'how does the defense respond to charge X?' question. Use this before reaching for individual get_defense / get_cross_examination (çapraz sorgu) calls when you don't yet know which docs are relevant. Three drill modes: - Catalog (cheap default, no args): every subject accusation with title, label, and counts of linked defenses / cross-examinations / evidences / expert opinions. Response: {subjectAccusations: [...], total, include: [], mode: 'catalog-shallow'}. ~10 KB. - Catalog + facets (include=['defenses','crossExaminations','evidences','expertOpinions','evaluations']): adds the listed facet arrays to every SA row. Response: {subjectAccusations: [...with facets], total, include: [...], mode: 'catalog-with-facets'}. Each include adds payload; passing all five materializes the full ~1 MB shape — usually the wrong move. - Single SA full picture (sa_key='bogazici-imar-rusvet'): returns one SA's full row including every facet. Response: {subjectAccusation: {...}}. Mutually exclusive with include (sa_key always returns everything). Identify SA keys via list_subject_accusations, or via subjectAccusations.key entries on docs returned by other tools.
get_accusations_vs_defense
ChatGPTCross-cutting iddia (accusation) ↔ savunma (defense) map — the canonical aggregate for any 'how does the defense respond to charge X?' question. Use this before reaching for individual get_defense / get_cross_examination (çapraz sorgu) calls when you don't yet know which docs are relevant. Three drill modes: - Catalog (cheap default, no args): every subject accusation as a lean discovery row — key, label, title, isRefuted, linked accusation keys, attendeeCount, and counts of linked defenses / cross-examinations / evidences / expert opinions. Summaries, attendee details, and facet arrays are omitted — drill with sa_key for those. Response: {subjectAccusations: [...], total, include: [], mode: 'catalog-shallow'}. - Catalog + facets (include=['defenses','crossExaminations','evidences','expertOpinions','evaluations']): adds the listed facet arrays onto every lean row. Response: {subjectAccusations: [...with facets], total, include: [...], mode: 'catalog-with-facets'}. Each include adds payload; passing all five materializes a large shape — usually the wrong move. - Single SA full picture (sa_key='eylem-001'): returns one SA's full row including summary and every facet, plus a derived coverage block (defendantCount / respondedCount / silentCount / silentDefendants[]) reporting which charged defendants have not yet filed a defense or been cross-examined. Response: {subjectAccusation: {...}}. Mutually exclusive with include (sa_key always returns everything). Identify SA keys via list_subject_accusations, or via subjectAccusations.key entries on docs returned by other tools.
get_attendee
ChatGPTReturns a single attendee's details (bio, role, attorneys, detention status). Includes courtProcess for defendants — accusations, key events, doc counts, and defenseHearings (per-defendant rollup of hearings where they were the day's primary defender or were cross-examined / çapraz sorgu'ya çıktı; see get_glossary.fields.defenseHearings for shape). NOTE: defenseHearings is only present for sanık (defendant) and müşteki-sanık (defendant who is also a complainant). Its absence on attorneys (mudafi), judges (mahkeme-baskani), witnesses (tanık), or experts (bilirkişi) means 'not a defendant', not 'never appeared' — those parties speak via attendeeEntries instead. For a full defendant overview, prefer get_defendant_profile.
get_attendee
ChatGPTReturns a single attendee's details (bio, role, attorneys, detention status). Includes courtProcess for defendants — accusations, key events, doc counts, and defenseHearings (per-defendant rollup of hearings where they were the day's primary defender or were cross-examined / çapraz sorgu'ya çıktı; see get_glossary.fields.defenseHearings for shape). NOTE: defenseHearings is only present for sanık (defendant) and müşteki-sanık (defendant who is also a complainant). Its absence on attorneys (mudafi), judges (mahkeme-baskani), witnesses (tanık), or experts (bilirkişi) means 'not a defendant', not 'never appeared' — those parties speak via attendeeEntries instead. For defendants, courtProcess splits formal charges (subjectAccusations) from mention-only SAs (mentionedInSAs) — see get_glossary.fields. For a full defendant overview, prefer get_defendant_profile.
get_attendee_entries
ChatGPTReturns hearing timeline entries for a specific attendee. Heavy speakers (e.g. the primary defendant) accumulate hundreds of entries across 25+ hearing days — narrow with at least one of: hearing_id (single day), since_hearing_id/until_hearing_id (range by gun-N number), keyword (Turkish-aware substring on entry text). With no narrowing, the most recent limit entries are returned, newest first. Response shape: {items, total (this attendee's full entry count across all hearings), matched (count after filters applied), returned (length of items[] after limit slicing), truncated (true when matched > returned — narrow with stricter filters; no offset/pagination available), limit, ordering: 'chronological' | 'recent_first'}.
get_attendee_entries
ChatGPTReturns hearing timeline entries for a specific attendee. Heavy speakers (e.g. the primary defendant) accumulate hundreds of entries across 25+ hearing days — narrow with at least one of: hearing_id (single day), since_hearing_id/until_hearing_id (range by gun-N number), keyword (Turkish-aware substring on entry text). With no narrowing, the most recent limit entries are returned, newest first. Response shape: {items, total (this attendee's full entry count across all hearings), matched (count after filters applied), returned (length of items[] after limit slicing), truncated (true when matched > returned — narrow with stricter filters; no offset/pagination available), limit, ordering: 'chronological' | 'recent_first'}.
get_case
ChatGPT[Orientation tool — call on cold start alongside get_hearing_state and get_glossary.] Returns case metadata (title, court, start date) for the İBB (İstanbul Büyükşehir Belediyesi / Istanbul Metropolitan Municipality) corruption trial, plus aggregate stats (total hearings, defendants, attendees). Confirms what trial this MCP serves — also called the 'Silivri trial' after the prison where most defendants are detained.
get_case
ChatGPT[Orientation tool — call on cold start alongside get_hearing_state and get_glossary.] Returns case metadata (title, court, start date) for the İBB (İstanbul Büyükşehir Belediyesi / Istanbul Metropolitan Municipality) corruption trial, plus aggregate stats (total hearings, defendants, attendees). Confirms what trial this MCP serves — also called the 'Silivri trial' after the prison where most defendants are detained.
get_cross_examination
ChatGPTReturns the full cross-examination (çapraz sorgu) document — summary, per-subject-accusation evaluations with strength ratings (strong/moderate/weak/unaddressed), disputed evidences, recanted statements. For the Q&A transcript itself, read the hearing entries via get_entries filtered on entry_type='capraz-sorgu'.
get_cross_examination
ChatGPTReturns the full cross-examination (çapraz sorgu) document — summary, per-subject-accusation evaluations with strength ratings (strong/moderate/weak/unaddressed), disputed evidences, recanted statements. For the Q&A transcript itself, read the hearing entries via get_entries filtered on entry_type='capraz-sorgu'.
get_defendant_profile
ChatGPTSingle-shot defendant overview — combines attendee info (bio, role, attorneys, detention status), court process (accusations, key events, verdict, doc counts, defenseHearings rollup), and full document index (subject accusations with linked defenses and strength evaluations). The courtProcess.defenseHearings array lists every hearing where the defendant was the day's primary defender, was cross-examined (çapraz sorgu), or both — each row is {id, dayNumber, date, role: 'main'|'crossExamined'|'both'} sorted by dayNumber ascending. Use this first for any defendant question. Only works for sanık (defendant) and müşteki-sanık (defendant who is also a complainant) roles — for non-defendant attendees (attorneys / mudafi, judges / mahkeme-baskani, witnesses / tanık, experts / bilirkişi), use get_attendee instead.
get_defendant_profile
ChatGPTSingle-shot defendant overview — combines attendee info (bio, role, attorneys, detention status), court process (accusations, key events, verdict, doc counts, defenseHearings rollup), and full document index (subject accusations with linked defenses and strength evaluations). Charge vs mention: courtProcess.subjectAccusations lists SAs the defendant is FORMALLY charged in, courtProcess.mentionedInSAs lists SAs where they are only named (witness/victim/secondary); the two are disjoint. The same split is on linkedDocs.subjectAccusations[] via isFormalCharge, with each row's accusations[] giving the defendant's fıkra-exact charges for that SA. The courtProcess.defenseHearings array lists every hearing where the defendant was the day's primary defender, was cross-examined (çapraz sorgu), or both — each row is {id, dayNumber, date, role: 'main'|'crossExamined'|'both'} sorted by dayNumber ascending. Use this first for any defendant question. Only works for sanık (defendant) and müşteki-sanık (defendant who is also a complainant) roles — for non-defendant attendees (attorneys / mudafi, judges / mahkeme-baskani, witnesses / tanık, experts / bilirkişi), use get_attendee instead.
get_defense
ChatGPTReturns the full defense document — summary, content text, per-subject-accusation evaluations with strength ratings (strong/moderate/weak/unaddressed), disputed evidences, recanted statements. Use get_defense_entries for the structured Q&A transcript.
get_defense
ChatGPTReturns the full defense document — summary, content text, per-subject-accusation evaluations with strength ratings (strong/moderate/weak/unaddressed), disputed evidences, recanted statements. Use get_defense_entries for the structured Q&A transcript.
get_defense_entries
ChatGPTReturns the structured Q&A transcript for a defense — speaker turns ordered by seqNo. Each turn has attendee (speaker key), attendeeLabel, text, and optional note/ref_urls. Call after get_defense when the summary isn't enough.
get_defense_entries
ChatGPTReturns the structured Q&A transcript for a defense — speaker turns ordered by seqNo. Each turn has attendee (speaker key), attendeeLabel, text, and optional note/ref_urls. Call after get_defense when the summary isn't enough.
get_entries
ChatGPTReturns the timeline entries for a hearing day — testimony, cross-examinations, narration, journalist quotes. Each entry has an attendee (speaker, null = narrator), text, time, optional references. Filter by attendee key or entry_type (see enum). This is the tool to use for any 'show me X from hearing day Y' question — cross-examination turns, break summaries, journalist quotes, or one person's lines. Do not search by keyword to filter by type; use the entry_type filter directly. Recipes: - All cross-examination turns from one day: hearing_id='gun-31', entry_type='capraz-sorgu' - One person's lines from one day: hearing_id='gun-31', attendee='elcin-karaoglu' - Break summaries only: hearing_id='gun-31', entry_type='ara-ozet' - Journalist quotes only: hearing_id='gun-31', entry_type='muhabir-alintisi' - Everything from one day: hearing_id='gun-31' (no filters) Response shape: {items[], total, hearing_id, state: 'scheduled'|'active'|'ended', note?}. The note field appears when the hearing is in catalog but entries are unavailable (e.g. state='scheduled' → empty items + note). Hearing not found in catalog → error redirecting to list_hearings.
get_entries
ChatGPTReturns the timeline entries for a hearing day — testimony, cross-examinations, narration, journalist quotes. Each entry has an attendee (speaker, null = narrator), text, time, optional references. Filter by attendee key or entry_type (see enum). This is the tool to use for any 'show me X from hearing day Y' question — cross-examination turns, break summaries, journalist quotes, or one person's lines. Do not search by keyword to filter by type; use the entry_type filter directly. Recipes: - All cross-examination turns from one day: hearing_id='gun-31', entry_type='capraz-sorgu' - One person's lines from one day: hearing_id='gun-31', attendee='elcin-karaoglu' - Break summaries only: hearing_id='gun-31', entry_type='ara-ozet' - Journalist quotes only: hearing_id='gun-31', entry_type='muhabir-alintisi' - Everything from one day: hearing_id='gun-31' (no filters) Response shape: {items[], total, hearing_id, state: 'scheduled'|'active'|'ended', note?}. The note field appears when the hearing is in catalog but entries are unavailable (e.g. state='scheduled' → empty items + note). Hearing not found in catalog → error redirecting to list_hearings.
get_evidence
ChatGPTReturns full evidence document — summary, category, source institution, contestation rollup (challenging defenses/cross-examinations with grounds), linked subject accusations.
get_evidence
ChatGPTReturns full evidence document — summary, category, source institution, contestation rollup (challenging defenses/cross-examinations with grounds), linked subject accusations.
get_expert_opinion
ChatGPTReturns full expert opinion document — summary, content, linked subject accusations.
get_expert_opinion
ChatGPTReturns full expert opinion document — summary, content, linked subject accusations.
get_glossary
ChatGPT[Orientation tool — call on cold start alongside get_case and get_hearing_state.] Returns the full glossary of Turkish judicial vocabulary used across this MCP — role slugs, entry types, document types, strength rating semantics, legal concepts, and field-name conventions. Small and stable; safe to cache for the session. Call again when you encounter an unfamiliar Turkish term in tool output.
get_glossary
ChatGPT[Orientation tool — call on cold start alongside get_case and get_hearing_state.] Returns the full glossary of Turkish judicial vocabulary used across this MCP — role slugs, entry types, document types, strength rating semantics, legal concepts, and field-name conventions. Small and stable; safe to cache for the session. Call again when you encounter an unfamiliar Turkish term in tool output.
get_hearing
ChatGPTReturns a single hearing day by id (e.g. 'gun-34') — date, attendees, state, mainDefendants[], ceGeneratedFor[]. Use get_entries(hearing_id) to fetch the timeline content for that day.
get_hearing
ChatGPTReturns a single hearing day by id (e.g. 'gun-34') — date, attendees, state, mainDefendants[], ceGeneratedFor[]. Use get_entries(hearing_id) to fetch the timeline content for that day.
get_hearing_state
ChatGPT[Orientation tool — call on cold start alongside get_case and get_glossary.] Returns the currently-active hearing (when court is in session) and the last completed hearing. Use this to orient in the trial timeline before any other query.
get_hearing_state
ChatGPT[Orientation tool — call on cold start alongside get_case and get_glossary.] Returns the currently-active hearing (when court is in session) and the last completed hearing. Use this to orient in the trial timeline before any other query.
get_indictment_section
ChatGPTReturns a single indictment section — title, path, parentSection, ancestors, depth.
get_indictment_section
ChatGPTReturns a single indictment section — title, path, parentSection, ancestors, depth.
get_linked_docs
ChatGPTPre-computed SA→docs index for one defendant — each subject accusation with linked defenses, cross-examinations, strength evaluations (strong/moderate/weak/unaddressed), organized by topic. Already embedded in get_defendant_profile.linkedDocs — only call this directly when you've already loaded the profile and want a refetch, or when you want the linkedDocs blob alone without the rest of the profile payload.
get_linked_docs
ChatGPTPre-computed SA→docs index for one defendant — each subject accusation with linked defenses, cross-examinations, strength evaluations (strong/moderate/weak/unaddressed), organized by topic. Each SA row carries isFormalCharge (true = the defendant is formally charged in this SA; false = mention-only — witness/victim/secondary) and an accusations[] holding that defendant's fıkra-exact charge set for the SA (empty on mention-only rows). This is the richest charge-vs-mention view for a defendant. Already embedded in get_defendant_profile.linkedDocs — only call this directly when you've already loaded the profile and want a refetch, or when you want the linkedDocs blob alone without the rest of the profile payload.
get_statement
ChatGPTReturns full statement document — summary, content text, linked subject accusations, and page references.
get_statement
ChatGPTReturns full statement document — summary, content text, linked subject accusations, and page references.
get_subject_accusation
ChatGPTReturns full subject accusation — summary of the alleged action, linked accusations, involved attendees, and refutation status.
get_subject_accusation
ChatGPTReturns full subject accusation — summary of the alleged action, linked accusations, involved attendees, and refutation status.
list_accusations
ChatGPTLists criminal charges (TCK articles) in the indictment. Returns key, title, legalBasis. Small set (~19 charges). Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return only charges levied against that defendant — there is no direct attendee field on accusation rows; this is a relationship traversal. No other server filters; for SA-anchored views use get_accusations_vs_defense.
list_accusations
ChatGPTLists criminal charges (TCK articles) in the indictment. Returns key, title, legalBasis. Small set (~19 charges). Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return only charges levied against that defendant — there is no direct attendee field on accusation rows; this is a relationship traversal. No other server filters; for SA-anchored views use get_accusations_vs_defense. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_attendees
ChatGPTLists trial attendees with server-side filtering. The catalog is large (~1000 rows) and dominated by attorneys (mudafi = defense attorney / katilan-vekili = intervenor's attorney) — almost every realistic query should pass at least one filter. Filters compose with AND. Use get_glossary.roles for the full slug→meaning table. Response shape: {items, total (catalog size before filters), matched (after filters), truncated, limit: 200}. Hard cap is 200 with no offset/pagination — when truncated=true, narrow filters until matched ≤ 200. Common recipes: - defendants only (sanık): roles=['sanik','musteki-sanik'] - non-attorneys: exclude_roles=['mudafi','katilan-vekili'] - find by name: name_contains='İmamoğlu' (pass either ASCII 'imamoglu' or diacritic 'İmamoğlu' — both match) - detained defendants (tutuklu sanık): roles=['sanik'], detained=true - cooperating witnesses (itirafçı): cooperating=true
list_attendees
ChatGPTLists trial attendees with server-side filtering. The catalog is large (~1000 rows) and dominated by attorneys (mudafi = defense attorney / katilan-vekili = intervenor's attorney) — almost every realistic query should pass at least one filter. Filters compose with AND. Use get_glossary.roles for the full slug→meaning table. Response shape: {items, total (catalog size before filters), matched (after filters), truncated, limit: 200}. Hard cap is 200 with no offset/pagination — when truncated=true, narrow filters until matched ≤ 200. Common recipes: - defendants only (sanık): roles=['sanik','musteki-sanik'] - non-attorneys: exclude_roles=['mudafi','katilan-vekili'] - find by name: name_contains='İmamoğlu' (pass either ASCII 'imamoglu' or diacritic 'İmamoğlu' — both match) - detained defendants (tutuklu sanık): roles=['sanik'], detained=true - cooperating witnesses (itirafçı): cooperating=true
list_cross_examinations
ChatGPTLists cross-examination sessions (çapraz sorgu — courtroom questioning of a defendant/witness/expert). Returns key, title, date, hearingId, dayNumber, examined (the attendee being questioned — sanık (defendant) / tanık (witness) / bilirkişi (court-appointed expert) / müşteki (complainant)), examiner, examiners, evaluationSummary. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (CEs where this person was examined). No other server filters — for hearingId/dayNumber/examiner slicing, fetch the index and filter client-side.
list_cross_examinations
ChatGPTLists cross-examination sessions (çapraz sorgu — courtroom questioning of a defendant/witness/expert). Returns key, title, date, hearingId, dayNumber, examined (the attendee being questioned — sanık (defendant) / tanık (witness) / bilirkişi (court-appointed expert) / müşteki (complainant)), examiner, examiners, evaluationSummary. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (CEs where this person was examined). No other server filters — for hearingId/dayNumber/examiner slicing, fetch the index and filter client-side. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_defenses
ChatGPTLists defense pleas (savunma) — either the defendant's own statement or their attorney's plea. Returns key, title, date, defenseType (own/attorney), defendant (sanık who owns the plea), attendee (plea author — same as defendant for 'own', attorney for 'attorney'), hearingIds, isWithdrawn, evaluationSummary. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return one defendant's pleas. No other server filters — for defenseType, hearingId, or isWithdrawn slicing, fetch the index and filter client-side; for SA-anchored views use get_accusations_vs_defense.
list_defenses
ChatGPTLists defense pleas (savunma) — either the defendant's own statement or their attorney's plea. Returns key, title, date, defenseType (own/attorney), defendant (sanık who owns the plea), attendee (plea author — same as defendant for 'own', attorney for 'attorney'), hearingIds, isWithdrawn, evaluationSummary. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return one defendant's pleas. No other server filters — for defenseType, hearingId, or isWithdrawn slicing, fetch the index and filter client-side; for SA-anchored views use get_accusations_vs_defense. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_evidences
ChatGPTLists claimed evidence from the indictment (financial records, digital evidence, surveillance, etc.). Returns key, title, category, source, date, contestation status, and linked subject accusations. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (evidence linked to SAs that defendant is charged with). No other server filters — for category, source, or contestation slicing, fetch the index and filter client-side.
list_evidences
ChatGPTLists claimed evidence from the indictment (financial records, digital evidence, surveillance, etc.). Returns key, title, category, source, date, contestation status, and linked subject accusations. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (evidence linked to SAs that defendant is charged with). No other server filters — for category, source, or contestation slicing, fetch the index and filter client-side. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_expert_opinions
ChatGPTLists expert/bilirkişi reports filed in the case. Returns key, title, date, expert name. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (expert opinions linked to SAs that defendant is charged with). No other server filters; fetch the index and filter client-side for any other slicing.
list_expert_opinions
ChatGPTLists expert/bilirkişi reports filed in the case. Returns key, title, date, expert name. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (expert opinions linked to SAs that defendant is charged with). No other server filters; fetch the index and filter client-side for any other slicing. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_hearings
ChatGPTLists all court hearing days with dates, attendees, and state. Use get_hearing(id) for a single hearing. Pass state (scheduled/active/ended) to filter. Pass defendant (attendee key) to filter to days where that defendant was a main defender or was cross-examined; pair with defendant_role to narrow. Each hearing has dayNumber, label, and (when set) mainDefendants[] / ceGeneratedFor[] arrays. Recipes: - All days where Imamoğlu came up: defendant='imamoglu' - Days Imamoğlu was cross-examined: defendant='imamoglu', defendant_role='crossExamined' - Completed days where Imamoğlu was primary defender: defendant='imamoglu', defendant_role='main', state='ended' The defendant-filtered result is the same data as get_defendant_profile(X).courtProcess.defenseHearings — they read the same source and agree by construction. Use whichever side fits your query (hearing-first vs defendant-first).
list_hearings
ChatGPTLists all court hearing days with dates, attendees, and state. Use get_hearing(id) for a single hearing. Pass state (scheduled/active/ended) to filter. Pass defendant (attendee key) to filter to days where that defendant was a main defender or was cross-examined; pair with defendant_role to narrow. Each hearing has dayNumber, label, and (when set) mainDefendants[] / ceGeneratedFor[] arrays. Recipes: - All days where Imamoğlu came up: defendant='imamoglu' - Days Imamoğlu was cross-examined: defendant='imamoglu', defendant_role='crossExamined' - Completed days where Imamoğlu was primary defender: defendant='imamoglu', defendant_role='main', state='ended' The defendant-filtered result is the same data as get_defendant_profile(X).courtProcess.defenseHearings — they read the same source and agree by construction. Use whichever side fits your query (hearing-first vs defendant-first).
list_indictment_sections
ChatGPTLists hierarchical sections of the indictment (iddianame), e.g. '2.3.1 Boğaziçi İmar' (Bosphorus Zoning). Returns key, path (numeric), title, parentSection. Useful for browsing indictment structure. Response: {items[]}. attendee_key has no effect here — global hierarchical structure, no per-defendant view; browse via parentSection / path / depth.
list_indictment_sections
ChatGPTLists hierarchical sections of the indictment (iddianame), e.g. '2.3.1 Boğaziçi İmar' (Bosphorus Zoning). Returns key, path (numeric), title, parentSection. Useful for browsing indictment structure. Response: {items[]}. attendee_key has no effect here — global hierarchical structure, no per-defendant view; browse via parentSection / path / depth. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_statements
ChatGPTLists witness/defendant statements from the investigation and trial. Returns key, title, date, attendee, cooperatingWitness flag, isRecanted flag. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (statements linked to that defendant). No other server filters — for hearing-day, cooperatingWitness, or isRecanted slicing, fetch the index and filter client-side.
list_statements
ChatGPTLists witness/defendant statements from the investigation and trial. Returns key, title, date, attendee, cooperatingWitness flag, isRecanted flag. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json (statements linked to that defendant). No other server filters — for hearing-day, cooperatingWitness, or isRecanted slicing, fetch the index and filter client-side. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
list_subject_accusations
ChatGPTLists concrete alleged actions/schemes from the indictment (iddianame), e.g. 'Boğaziçi İmar Rüşvet Sistemi' (Bosphorus Zoning Bribery Scheme). Returns key, title, label, linked accusation keys. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return SAs (subject accusations) that defendant is charged with — relationship traversal, not a direct row filter. No other server filters; for the full iddia (accusation) ↔ savunma (defense) map use get_accusations_vs_defense.
list_subject_accusations
ChatGPTLists concrete alleged actions/schemes from the indictment (iddianame), e.g. 'Boğaziçi İmar Rüşvet Sistemi' (Bosphorus Zoning Bribery Scheme). Returns key, title, label, linked accusation keys. Response: {items[]}. attendee_key cross-references via courtProcess/{key}.json to return SAs (subject accusations) the defendant is FORMALLY CHARGED in (courtProcess.subjectAccusations) — mention-only SAs (courtProcess.mentionedInSAs: witness/victim/secondary appearances) are NOT included here, and rows carry no charge-vs-mention flag. For the full charge-vs-mention picture per defendant (isFormalCharge + fıkra-exact charges per SA) use get_linked_docs / get_defendant_profile. No other server filters; for the full iddia (accusation) ↔ savunma (defense) map use get_accusations_vs_defense. Pagination: pass limit (1–200, default 100) and offset; the response carries total, returned, hasMore. Keep paging while hasMore is true. Heavy pages are auto-trimmed to fit the response size cap (signalled by a warning), so returned may be less than limit even mid-list.
search_entries
ChatGPTTurkish-aware keyword search across hearing transcripts (İ↔i, Ş↔ş, Ğ↔ğ, Ü↔ü, Ç↔ç, Ö↔ö folded both ways — pass either ASCII or diacritic forms). Returns matches most-recent-hearing-first. Default to global search (omit hearing_id) for any 'find every mention of X' / 'has X come up?' question — one call scans up to 50 most-recent hearings and returns combined results. DO NOT call this tool repeatedly with different hearing_id values to cover more days; that is always worse than the global mode. Pass hearing_id only when the user explicitly scopes the question to one day. Response shape: {results[], total (matches before limit slice), truncated (true when total > limit), limit, hearings_searched, hearings_truncated (true when more than 50 hearings exist and only the 50 most recent were searched)}. If hearings_truncated is true and the user wants older days, tell them — don't iterate hearing-by-hearing. If you need more than 200 results, narrow the keyword instead of paging — there is no offset.
search_entries
ChatGPTTurkish-aware keyword search across hearing transcripts (İ↔i, Ş↔ş, Ğ↔ğ, Ü↔ü, Ç↔ç, Ö↔ö folded both ways — pass either ASCII or diacritic forms). Returns matches most-recent-hearing-first. Default to global search (omit hearing_id) for any 'find every mention of X' / 'has X come up?' question — one call scans up to 50 most-recent hearings and returns combined results. DO NOT call this tool repeatedly with different hearing_id values to cover more days; that is always worse than the global mode. Pass hearing_id only when the user explicitly scopes the question to one day. Response shape: {results[], total (matches before limit slice), truncated (true when total > limit), limit, hearings_searched, hearings_truncated (true when more than 50 hearings exist and only the 50 most recent were searched)}. If hearings_truncated is true and the user wants older days, tell them — don't iterate hearing-by-hearing. If you need more than 200 results, narrow the keyword instead of paging — there is no offset.