- Brand
- Klaracase
- Category
- Operations
- Primary Subcategory
- Legal Research Engines
Integration details
Description
klaracase connects your chat to German case law and statutes: more than 500,000 court decisions, federal and state statutes in their consolidated versions, selected EU legal acts and international conventions. Built for legal research by lawyers, law firms, in-house legal teams and law students, and for anyone who works with German law. Ask in plain language, for example about tenancy law, employment law or a specific BGH ruling. You get court decisions with court, date and file number (Aktenzeichen). Catch AI hallucinations before they become a risk. An invented citation in a brief or a legal opinion is a liability risk. klaracase backs every citation with a real document, so you can check every reference yourself. What klaracase does: - Find decisions and provisions on a legal question, by topic, provision or file number. - Retrieve the full text of a decision or a provision. - Show which decisions and provisions a decision cites, and which later decisions cite it. - Check the citations in your text: does this decision or provision exist, and is the reference correct? - Show which courts and periods the collection covers. klaracase is a research tool. It finds and verifies sources. It gives no legal advice and does not replace a lawyer's review.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Legal Research Engines
- Secondary Subcategories
- None listed
- Brand
- Klaracase
- Access
- Account required
- First tracked
- 2026-10-28
- Tool count
- 9
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for klaracase
Get updates when klaracase’s Discoverability Score or category rank changes.
Competing in ChatGPT Legal Research Engines
View Category9 tools agents can invoke
Use this when the user wants several decisions (up to 10) they have already identified as one grounded package, for a memo, a comparison or a brief: each decision's text plus its outgoing citation edges in one structured JSON answer, suitable as grounded context. It is not meant for ONE decision (get_decision serves precise Randnummer and section slices), for the complete paged edges of one decision (get_citation_graph), or for finding decisions (the search tools). ARGUMENTS. `ids` (array of strings, required, 1 to 10): internal decision UUIDs (the `id` a search row, `get_decision` or `get_citation_graph` serves) or Aktenzeichen; order matters, because the response budget drops decisions from the END. `include_citations` (boolean, default true): serve each decision's outgoing citation edges. `full_text` (boolean, default false): serve whole judgments instead of ~700-character excerpts. `max_chars` (integer, default 60000, minimum 500, maximum 200000): the per-decision text cap when `full_text` is true. REFUSAL CODES. Every refusal carries a closed `error_code`: `ids_unresolved` (an id was not found or was ambiguous), `max_chars_below_minimum`, `unauthenticated`, `no_billable_organization`, `insufficient_credits`, `volume_cap` (the organization's daily row limit, or with `full_text` its daily full-text limit; nothing ran, nothing was charged, retry after `retry_after_seconds`), `backend_unavailable`. Needs the `datapackage` token ability (else `token_ability_missing`; nothing runs or is charged). PRICE. Costs 5 credits per call. The charge is idempotency-keyed on the resolved ids plus `include_citations`, `full_text` and `max_chars`, so repeating the same package inside the billing month reports `cost: 0`. The `credits` block reports what this call took. RESPONSE FIELDS. `payload_truncated` says whether the response was shed to fit the client's size cap. `truncation.dropped_seed_ids` names the decisions that were dropped, and a second call with those ids gets the rest. `truncation_notice` says the same in German. Per decision, `truncated` and `truncated_reason` say whether the served text is the whole judgment, and `leitsatz_source` says who wrote the headnote an excerpt cut from a Leitsatz. Every edge carries `in_corpus` and `resolution_status`, one of `resolved`, `unresolved_ambiguous`, `unresolved_pending`, `unresolved_no_match`, `unresolved_out_of_coverage`. An unresolved edge is never corpus-verified, and `unresolved_out_of_coverage` is a disclosed corpus boundary, never a citation that does not exist. An unresolved edge also carries `unresolved_reason` when the stored row names WHY it did not bind (for example `foreign_court_docket`, `out_of_coverage`, `journal_fundstelle`, `ambiguous_docket`), the same value get_citation_graph serves for that edge; the key is absent when nothing was stored, and a resolved edge never carries it. Field-by-field response semantics, disclosure rules and worked examples: see the "assemble_datapackage" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
assemble_datapackage
Use this when the user provides a German legal text (a Schriftsatz, Urteil, Beschluss, memo or draft) and asks whether its citations are real. The tool checks every court-decision and statute citation against the Klaracase corpus. It returns one verdict per citation, with offsets into the exact input text. It does not find decisions (`search_decisions`, `cross_type_search`), read one already identified (`get_decision`) or build a grounding package from ids (`assemble_datapackage`). A `matched_decision.artifact_id` is the id `get_decision` and `get_citation_graph` take. SYNCHRONOUS AND CORPUS-ONLY. One call, no polling. The external register stage is skipped here, so `not_found` is WEAKER evidence than in the Citation Check of the Klaracase web app, which also consults the register. The web app is where longer documents, and anything needing external confirmation, are checked. ARGUMENTS. `text` (required): the legal text, at least 50 characters and at most the per-tool cap named in the schema; every offset in the answer is a Unicode codepoint offset into this exact string. `reference_date` (optional, `YYYY-MM-DD`): the document date the pre-reform-numbering advisory falls back to. VERDICTS, a CLOSED seven-value set: `verified_corpus`, `verified_external`, `not_found`, `out_of_coverage`, `ambiguous`, `unverifiable`, `discrepancy`. Only `discrepancy` asserts that something IS wrong; the other six run from confirmation to absence of evidence, and `not_found` is never a claim that a citation is fabricated. The verdict is always one of these seven words. REFUSALS carry an `error_code`, one of `text_too_long`, `not_german_legal_text`, `insufficient_credits`, `unauthenticated`, `no_billable_organization`, `backend_unavailable`. Two refusals carry validation prose instead of a code: a `text` under 50 characters, and a `reference_date` that is not an ISO calendar day. `not_german_legal_text` is the legal-text gate: a deterministic counter reads five independent legal-signal categories, and the text passes on TWO OR MORE categories. A lone statute sentence is refused however long it is; the surrounding sentences or the cited decision supply the missing categories, padding does not. Needs the `citation-check` token ability (else `token_ability_missing`; nothing runs or is charged). PRICE: a length-based credit charge, taken before the check runs and deduped on identical text inside the billing period, so a repeat costs 0, unless the latest same-content run FAILED, which is charged again. The PRICE block below states the live formula. FIELDS THAT QUALIFY THE VERDICTS. `partial` and `unverified_count` say the run left citations unchecked; a re-check of that run in the Citation Check of the web app (the `notes` name its page) re-runs the external stage over exactly those citations and costs nothing, while calling this tool again re-checks the whole text and charges for it. `check_scope` and `subdivision_check` say how far down the citation this check actually looked, and `check_scope.court` whether the court the prose names was compared at all. `verdict_counts` and `unique_citations` count DISTINCT citations while `findings` and `progress.citations_total` count OCCURRENCES, and the `extraction` counters say what was dropped rather than checked. The German advisory strings (`coverage_advisory`, `ambiguity_advisory`, `subdivision_advisory`, `ecli_advisory`, `evidence.advisory`, `evidence.section_absence_advisory`) are finished sentences written for the user to read as they stand. SIZE. `payload_truncated` is always present and says whether THIS answer had to be degraded to fit your tool-result budget. It is a different statement from `partial`, which is about the external register stage. When it is true, `truncation` names what was shed and `guidance` names the remedy as a call. The shedding order keeps the answer: the German advisory sentences go first, then `evidence` is reduced to its `reason`, and only then are tail findings dropped — every row that lost something names the loss in `payload_truncated_fields`, and `verdict_counts`, `progress` and `unique_citations` are computed over the WHOLE run, so they count dropped rows too. The Citation Check of the web app has no such budget, so a long document is checked there. PRICE (length-based, computed server-side, not from a client-supplied number): credits = max(2, ceil(characters / 5,000)), measured on the NORMALIZED text, so on this tool a check costs the 2-credit floor up to 10,000 characters and one more credit per further 5,000 characters, reaching 4 credits at the 20,000-character input cap. This step size is TIGHTER than the web app Citation Check's, because the same document checked there can be up to 150,000 characters, so the two surfaces can quote different prices for the same text. The `credits.cost` the response reports is the price actually charged; the formula only describes it. Field-by-field response semantics, disclosure rules and worked examples: see the "check_citations" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
check_citations
Use this when a search came back empty or thin and the open question is whether the corpus holds that court or that period at all, or when the user asks what Klaracase covers. Reports per-branch (Gerichtsbarkeit) and per-court decision counts with the earliest and latest `decision_date` we hold, measured over the decision store, not the search index: it tells a non-existent legal concept apart from a coverage gap. Free, 0 credits. It does not answer a legal question (the search tools) or list the filter VOCABULARY, the values a filter accepts (`list_facets`). A count in a search answer is scoped to one query and is not a coverage figure, while every figure here is DERIVED from the corpus and cannot drift the way a written sentence can. Nothing is required. `branch` scopes the report to one Gerichtsbarkeit slug; a branch is a COURT JURISDICTION and never a legal subject area (Rechtsgebiet), so `patent` is the Bundespatentgericht while patent decisions of the ordinary courts count under `ordentlich`. `top` caps the per-court rows, busiest first. Response fields. `coverage_ranges` IS THE INGESTION BOUNDARY, per bucket, and the one field an `out_of_coverage` verdict rests on. `holdings_earliest` rides each range row and is the earliest decision we MEASURABLY hold for that bucket. `court_founding_year` is the year the court was constituted, used as a plausibility floor on dates. `corpus_floors` is one derived sentence over the whole scope. A `courts` row's `earliest` is the earliest plausible decision we HOLD for that court, and it is NOT where our ingestion starts: `coverage_ranges`, `holdings_earliest` and `court_founding_year` say that, and the numbers differ by decades. This tool is free: it costs 0 credits and the `credits` block reports 0 charged. A refusal carries `error_code: "unauthenticated"` or `error_code: "no_billable_organization"`. A `branch` outside the slug set, or a `top` below 1 or above 100, is refused by validation in prose, with no code. Needs the `search` token ability (else `token_ability_missing`; nothing runs or is charged). Field-by-field response semantics, disclosure rules and worked examples: see the "corpus_coverage" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
corpus_coverage
Use this when the user asks what a decision relies on, which later decisions cite it, whether a line of case law is settled or contested, or wants to follow precedent from ONE decision they can name. Serves `references` (decisions it cites, outgoing) and `referenced_by` (decisions citing it, incoming). Edges are extracted from decision texts, so a missing edge is not proof that the decision cites nothing. It does not find a decision (the search tools), serve the text of one decision (`get_decision`), or bundle several decisions with their citations in one payload (`assemble_datapackage`). Arguments. `id` (string, required): the internal decision UUID, or a German Aktenzeichen like "VIII ZR 271/17". `direction` (string, default `both`): `outgoing`, `incoming` or `both`. `depth` (integer, default 1): 1 for direct neighbours, 2 for neighbours of neighbours, capped at 50 distinct neighbour decisions. `court` and `date` (strings, optional): disambiguators for an Aktenzeichen `id`. `page` (integer, default 1, maximum 20): 1-based page over the source decision's neighbour lists, 25 distinct decisions per direction, depth 1 only. The cursor follows the rows actually SERVED, so a row dropped to fit the size budget (`references_shed_by_budget`) is served first by the next `page` and `references_served_so_far` is where that page starts. Refusals carry an `error_code`: `not_found`, `ambiguous_aktenzeichen`, `invalid_direction`, `page_undefined_at_this_depth`, `unauthenticated`, `no_billable_organization`, `insufficient_credits`, `volume_cap` (the organization's daily row limit is reached; nothing ran and nothing was charged, retry after `retry_after_seconds`), `backend_unavailable`. Needs the `graph` token ability (else `token_ability_missing`; nothing runs or is charged). Costs 2 credits per call, and the `credits` block reports what this call took. Response fields. Every edge carries a `resolution_status`, one of `resolved`, `unresolved_ambiguous`, `unresolved_pending`, `unresolved_no_match`, `unresolved_out_of_coverage`; an `unresolved_ambiguous` edge serves `ambiguous_candidates` instead of one bound target. An unresolved edge also carries `unresolved_reason` when the stored row names WHY it did not bind (for example `foreign_court_docket`, `out_of_coverage`, `journal_fundstelle`, `ambiguous_docket`); the key is absent when nothing was stored, and a resolved edge never carries it. Where the reason is a coverage word it agrees with `resolution_status`: `out_of_coverage` beside `unresolved_out_of_coverage`, `in_range_unresolved` beside every other unresolved status. `loops_to_source` marks a depth-2 edge that points back at the source. `has_more_references` and `has_more_referenced_by` say whether a further page exists. `target_artifact_id` is the identity of a bound edge and the `id` that `get_decision` and `assemble_datapackage` take, `reference_canonicals` and `occurrences` are its evidence, and `canonical_key_conflict` reports a clash of the spelling key an unbound edge falls back on. `references_total`, `references_resolved_total`, `references_unresolved_total` and `referenced_by_total` describe the decision rather than the list this answer served: two spellings of one citation are two stored rows and one served edge. `references_withheld_reasons` groups by reason every edge of this decision that carries a withheld reason: both the ones this tool removed from the lists and the ones it still serves with a `withheld_reason` on the row, counted in rows and per decision, so an edge marked in the list is always counted in the map beside it. TWO TRUNCATION SIGNALS, different questions: `truncated` (with `truncation_notice`) says the neighbour POOL was capped before serving and `page` reaches the rest; `payload_truncated`, always present, says THIS answer was degraded to fit the size budget, and when true a `truncation` object names the shed evidence fields and the edges dropped. Field-by-field response semantics, disclosure rules and worked examples: see the "get_citation_graph" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
get_citation_graph
Use this when the user names ONE decision, by Aktenzeichen ("VIII ZR 271/17"), ECLI or the `id` a search served, and wants its text, its headnote, a Randnummer window, or confirmation that it exists and says what they think it says. Serves the full text or one slice of it (a named `section` or a Randnummer window) plus metadata. It does not find decisions (`search_decisions`), cover statutes and decisions together (`cross_type_search`), or bundle several decisions with their citations in one call (`assemble_datapackage`). `search_decisions` also serves headnote provenance: `get_decision` serves no `leitsatz_source` and no reference or provenance block, so where a Leitsatz came from is answered by `search_decisions`. The `id` it serves is the handle for `get_citation_graph` and `assemble_datapackage`. ARGUMENTS. `id` accepts exactly three forms: the internal UUID, an Aktenzeichen in its normal spacing and casing ("VIII ZR 271/17"), or a full ECLI; nothing partial is normalized, and an Aktenzeichen shared by several courts is refused with a candidate list unless `court` and/or `date` narrow it. `max_chars` caps the returned text (minimum 500, default 40000). `rn_from`, `rn_to` and `section` select a slice instead of the whole text. JOINED PROCEEDINGS. `metadata.file_numbers` is the authoritative set of this decision's file numbers, and `joined_proceeding_note` fires whenever it holds more than one. The `title` the search tools serve is a static indexed string: it lists at most four file numbers, and on a decision with more than four it lists the first three plus `u. a. (+N)`. The docket you searched for can therefore sit behind that `u. a.`; `metadata.file_numbers` here holds the full set, and the title does not. REFUSAL CODES. `max_chars_below_minimum`, `not_found`, `not_found_under_filter`, `ambiguous_aktenzeichen`, `rn_range_not_found`, `section_not_found`, `sections_unavailable`, `official_headnote_not_located`, `document_leitsatz_not_located`, `unauthenticated`, `no_billable_organization`, `insufficient_credits`, `volume_cap` (the organization's daily full-text limit; nothing ran, nothing was charged, retry after `retry_after_seconds`), `backend_unavailable`. Needs the `read` token ability (else `token_ability_missing`; nothing runs or is charged). PRICE. 1 credit per decision per calendar month. The charge is idempotency-keyed per artifact per billing month, so every further read of the same decision that month, other sections and ranges included, reports `cost: 0`. FIELDS DESCRIBING THE SERVED TEXT. `full_text` holds the served text and `text_length` the whole judgment's length; `served_text_length` beside them is the slice's own length. `truncated` says your `max_chars` cut the text. `available_range_scope` names the population `available_range` describes. `rn_source` says whether a Randnummer may be cited, `rn_source_basis` says where that verdict came from, and `rn_source_note` explains it in words. `returned_range_note` names a widened, cut or refuted span, including the case where the served bytes refute the stored anchors. Field-by-field response semantics, disclosure rules and worked examples: see the "get_decision" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
get_decision
Fetch the full current text of ONE German federal or EU norm by its citation, e.g. "§ 535 BGB", "§ 626 Abs. 2 BGB" or "Art. 6 DSGVO". Returns heading, text, lifecycle (current, repealed, unconfirmed), the version served (last amendment date, source fetched and last seen), the neighbouring norms, and a ready `search_decisions` call for the decisions citing it. One norm per call. An Absatz in the reference is echoed with whether it exists; the text is always the whole norm. WHICH TOOL. `cross_type_search` FINDS a norm from a question; this tool reads one you can cite. `check_citations` verifies many citations in a text. REFUSAL CODES. invalid_reference, range_not_supported, historical_version_unavailable (a.F.), ambiguous (with candidates), not_found (detail_code statute_unknown, section_unknown, state_law_out_of_scope), statute_superseded (with successor), section_not_in_current_text. TOKEN ABILITY: read. PRICE: 1 credit per norm per calendar month; a repeat read this month reports cost 0. `norm.lifecycle`, `law.upstream_status` and `version.last_amendment_date` state whether the text is current and as of when. Field semantics: section "get_norm" in the tool guide at /docs/mcp/tools-guide. Field-by-field response semantics, disclosure rules and worked examples: see the "get_norm" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
get_norm
Use this when a search is to be filtered by court, branch, document type, jurisdiction, law type or cited norm: it lists the values the INDEX actually holds, so a filter value need not be guessed. A value is here because a decision was indexed under it, never because we verified the thing it names exists. It does not answer a legal question (the search tools) or say how much the corpus holds (`corpus_coverage`). Supported fields: `court_name`, `court_branch` (Gerichtsbarkeit), `document_type`, `jurisdiction`, `law_type` and `cited_norms`. `cited_norms` is never enumerated whole and REQUIRES a `norm` to scope to, e.g. `{"field":"cited_norms","norm":"§ 249 BGB"}`. The values populate a filter on search_decisions or cross_type_search. `corpus_coverage` reports how much the corpus HOLDS: the counts here are indexed passages, floored to coarse bands, and the live court total is `corpus_coverage.courts_total`. An unlisted value still filters, because this tool bounds ENUMERATION, never filtering. ARGUMENTS. `field` is required and takes one name from the list above. `type` (decision|law) scopes the counts to one artifact type. `norm` names the `cited_norms` family to list. `prefix` narrows the listing case-insensitively, and a trailing space is significant. RESPONSE FIELDS. `values` is always a JSON object, `{}` when empty. `truncated` says the list is short of the vocabulary. `applies_to` names the artifact type the field lives on. `guidance` gives the reason an empty list is empty; an unreachable index is reported there as an availability failure, never as an empty corpus. On a `cited_norms` family whose § IS in the current consolidated text, every value carries `absatz_absent_in_current_text`: a § that declares no Absatz leaves `Abs. 1` unchecked and marks `Abs. 2` or higher, the oracle that makes check_citations answer `absatz_absent`. On a family whose § is NOT in the current text, every value carries `section_absent_in_current_text: true` instead and NO Absatz flag, because that question does not arise; `section_repealed_on` rides beside it when the repeal date is known. When neither could be established, neither key is served. REFUSALS. Error codes: `unrecognisable_norm_token`, `norm_family_unavailable`, `unauthenticated`, `no_billable_organization`. A bad `field`, `type` or `prefix`, and a missing `norm`, are refused in prose without an error code. Needs the `search` token ability (else `token_ability_missing`; nothing runs or is charged). Free introspection: this call costs 0 credits. Field-by-field response semantics, disclosure rules and worked examples: see the "list_facets" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
list_facets
Use this when the user asks what German courts have decided on a legal question, wants case law on a topic, or needs decisions with real Aktenzeichen to cite: civil, criminal, administrative, tax, social and labour law, from the BGH, BVerfG, BVerwG, BSG, BFH, BAG, OLGs and LGs. The query takes German legal concepts, e.g. "Widerrufsrecht Fernabsatzvertrag Wertersatz Verbraucher", not bare keywords. It is not for a question outside German law, a known Aktenzeichen (`get_decision` looks it up), or a question where the statute matters as much as the case law (`cross_type_search` answers both in one call). A row's `id` is the handle for `get_decision`, `get_citation_graph` and `assemble_datapackage`. `list_facets` lists the filter values the index holds. `corpus_coverage` says how far back each court reaches; a zero can mean the period is not covered. ARGUMENTS. `query` (required, 2-500 characters). `court`, `branch` (Gerichtsbarkeit slug), `document_type`, `cited_norm` (one canonical §-token), `cited_statutes` and `date_from`/`date_to` (YYYY-MM-DD) narrow the search. `mode` (keyword|semantic|hybrid) is auto-selected when unset. `limit` defaults to 20, its cap. `page`: 1 to 10, default 1. `bridge: false` switches the vocabulary expansion off for one call. Your query text is processed in the EU (see the privacy policy). REFUSALS. `search_timeout` (retryable) and `index_unavailable` (nothing was searched) are failures, not an empty corpus: neither shows case law is absent. `insufficient_credits` refuses a call the balance cannot pay, `volume_cap` a call past the organization's daily row limit (nothing ran, nothing was charged; retry after `retry_after_seconds`), and a `query` over 500 characters answers `query_too_long`. Any other bad argument (unknown `branch`, `document_type` or `mode`, a bad date range, `page` outside 1 to 10) is refused in prose with no `error_code`. Needs the `search` token ability (else `token_ability_missing`; nothing runs or is charged). Costs 1 credit per distinct query (query, filters and mode), not per call; `page` and `limit` are free. FIELDS ON THE WHOLE RESULT SET (rows are one page). `total_available`, with `total_available_basis`, counts matching passages on the lexical arm alone, served as a floor band `{value, is_floor}`. `candidate_pool` is the window this call ranked and pages through; `pool_exhaustive` and `truncated` say whether anything matching remains. `payload_truncated` says the answer was shortened to fit the size budget. `filters_applied` records what the search RAN with. `rn_source` decides whether a row's Randnummer may be cited. Rows arrive in served order. `confidence` (`high`, `medium`, `low`) bands each row's relevance and `top_confidence` bands the best row's; null means "not measured on this request", never "low". Neither reorders anything. Raw scores, index ids and retrieval-leg disclosures are operator diagnostics and are not served to customer tokens. Field-by-field response semantics, disclosure rules and worked examples: see the "search_decisions" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
search_decisions
Use this when a German legal question needs the statute AND the case law in one answer: what the law says and how courts have applied it, or a § the user names plus the decisions on it. Two independent sections, `sections.laws` and `sections.decisions`. No commentary. The query takes German legal-concept phrasing, e.g. "Widerrufsrecht Fernabsatzvertrag Wertersatz Verbraucher", rather than bare keywords. It is not meant for decisions alone (search_decisions pages and serves 20 rows), a known Aktenzeichen (get_decision), or law outside Germany. A decision row's `id` feeds get_decision, get_citation_graph and assemble_datapackage. Arguments: `query` (required, 2-500 characters); `jurisdiction` (max 50) filters the LAWS section only; `court` (max 100), `branch`, `document_type`, `cited_norm` (max 120) and `cited_statutes` (up to 5 statutes from a fixed list) filter the decisions section; `date_from`/`date_to` (YYYY-MM-DD, `date_to` not earlier); `mode` (keyword|semantic|hybrid, default hybrid); `limit` (per section, default 5, capped at 10); `bridge` (default true). No filter axis narrows both sections: `filters_applied_sections` names, per axis, the sections it ran on; a section it does not name was searched UNFILTERED on that axis. The laws section can add doctrinal phrases. A language model writes them from a query in everyday language. For this step, that model processes your query text in the EU (see the privacy policy, Datenschutzerklärung). `bridge: false` switches every server-side addition off. Refusal `error_code` values: `insufficient_credits`, `unauthenticated`, `no_billable_organization`, `search_timeout`, `index_unavailable`, `query_too_long`, `volume_cap` (the organization's daily row limit; nothing ran, nothing was charged, retry after `retry_after_seconds`). Other bad arguments (a bad date range, an unknown enum, `limit` below 1) are refused in prose with no code. Needs the `search` token ability (else `token_ability_missing`; nothing runs or is charged). Costs 1 credit per distinct query (query, filters and mode) per billing period, not per call; `limit` is free and a repeat reports `cost: 0`. On `credits.metered: false` the figures are null, not zero. Response structure. The two sections are independent retrievals, so a law row has no rank relative to a decision row. Rows arrive in served order. `confidence` (`high`, `medium`, `low`) bands each row's relevance and `top_confidence` bands the best row of the response; null means "not measured on this request", never "low". Neither reorders anything. `section_totals.<section>` carries `total_available` (matching indexed passages on the LEXICAL ARM ONLY, per `total_available_basis`, served as a floor band `{value, is_floor}`, so it is NOT an upper bound on the rows served, a UNION of several retrieval arms), `candidate_pool` (scales with `limit`) and three-valued `truncated` (null = that section never ran). `filters_applied` names the filters the search ran with, absent when nothing was filtered. Raw scores, index ids and retrieval-leg disclosures are operator diagnostics and are not served to customer tokens. `norms_cited_by_decision_results` names the §§ the served decisions cite in common. That block counts the TOP 10 of the ranked decision candidate pool, under a floor of two and a cap of five. With a `limit` below 10, its basis does not shrink with the page, so a `cited_by` entry may name a decision id this call did not serve. Field-by-field response semantics, disclosure rules and worked examples: see the "cross_type_search" section of https://klaracase.de/docs/mcp/tools-guide (markdown).
cross_type_search
klaracase ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve klaracase's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are klaracase alternatives on ChatGPT?
As of 2026-10-28, klaracase competes with Advoga IA, AI Attorney Pakistan, AI Lawyer Kazakhstan, AI Rechtshulp, AiLexLux Legal, AL WAKEELO, Alizé, AnyLawyer and 94 more in ChatGPT Legal Research Engines, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.