Skip to main content
Glama

Avokata: Lithuanian law & court practice

Read a provision or paragraphs

read_paragraphs
Read-onlyIdempotent

Sign-in required: call connect(email) and connect_verify first (free, one email) unless this connection is already signed in. Read a document by its own structure: give a pinpoint (straipsnis) like '6.38' for one article, or from_unit and count to page through it. On a ruling (nutartis / sprendimas), pass ruling_part=disposition to read only the operative order (rezoliucinė dalis). Never by character offset (read_source_text reads the publisher's text that way, without our structure). document_id is required and comes from a result: a search hit's id (an article id with # opens at that article) or document.id; a case number or an act number is not an id (find it with search_practice / search_law first). Page size is count; there is no limit or max_chars here. paragraphs contain the served text; inspect its version/wording qualifications before calling it current law. on_date requests separate wording_on_date, whose held/composed/missing evidence must support any historical claim. A # unit or pinpoint overrides from_unit. For whole-document paging, continue an unfiltered read as shown below. ECHR cases (coe.hudoc:) have no paragraphs here: the answer is the case card and its HUDOC link. Example arguments: {"document_id": "<document_id from search result>", "pinpoint": "6.217", "count": 1, "on_date": "2024-01-15"}. Replace the first bracketed document_id with the id returned by your search. To continue an unfiltered read, use its response document_id without a # fragment, set from_unit to its next_from_unit, omit pinpoint/article, and keep other filters. A next_from_unit from a pinpoint-filtered read is not a whole-document offset. Continuation arguments: {"document_id": "<document_id from previous read>", "from_unit": 14, "count": 3, "on_date": "2024-01-15"}.

Input Schema

NameRequiredDescriptionDefault
langNoWhich language version to read, as a two-letter code (`lt`, `en`, `fr`), for a document held in several languages; `<id>@en` in `document_id` does the same. Omit for the default version: Lithuanian where held, else the source language. Pinpoints are the same in every language; the answer names the language served and the others held.
countNoHow many paragraphs to return, default 5. With `pinpoint`/`article` and no count you get that provision's own paragraphs; with a count, the read opens at the provision and reads on in document order (`pinpoint='31 p.', count=3` gives paragraphs 31-33). The Civil Code runs to 1.7 million characters, so read in pages rather than asking for everything.
voiceNoOn a ruling only: return only the paragraphs in this voice - `court` (the court alone speaking, including its restatements of earlier rulings; `court_own` without them; `court_interpretation` its interpretation only), `party` (a party's argument or the question its appeal raises), `lower_court`, `institution`, `opinion`, or one voice name. Every paragraph of a ruling carries `voice` either way; a paragraph with more than one speaker is `mixed`, with each fragment's voice.
articleNoJump to an article by its number alone: `57`, `6.217`. Same effect as `pinpoint` with less typing — pass one or the other, not both naming different articles.
on_dateNoOn an act's article: `YYYY-MM-DD` requests separate `wording_on_date`, with its edition window, link and held/composed/missing qualification. Passing the date does not make `paragraphs` historical: they contain the text served by this read. Inspect `version` and `wording` qualifications before treating that text as current law. Use the separate dated result only to the extent its evidence supports it.
sectionNoOn a ruling only: the numbered section(s) the court prints - `IV` for section IV, `IV+` (or `nuo IV`) for it and every later one. Combines with ruling_part: ruling_part=`reasoning`, section=`IV+` reads only the court's reasoning from section IV on, in one call.
sessionNoThe `session` value the sign-in returned. Pass it on every call in this conversation, so the sign-in survives however this client handles connections; omit it when the user connected with Sign in (OAuth) or a key.
pinpointNoJump to a location by name, as a lawyer writes it: `6.217 straipsnis`, `13 straipsnis. 2 dalis`. Omit when the id already names the place.
from_unitNoOne-based position for a read without `pinpoint`/`article`, using the response's `document_id` without a `#` fragment. A `#` unit or pinpoint overrides it. Continue an unfiltered read with `next_from_unit`; that value from a pinpoint-filtered read is not a whole-document offset. There is no cursor.
document_idYesWhat to read: the `id` of a search hit - an article id (containing `#`) opens at that article and reads on - or the whole document's id to start at the top.
ruling_partNoOn a ruling only: return paragraphs from one section — `recital` (case history and parties' arguments under nustatė), `reasoning` (konstatuoja) or `disposition` (nutaria — the operative order). Omit for statutes.
jurisdictionNoWhich jurisdiction the id belongs to (`LT`). Omit for the account's own.
guidance_limitNoHow many explanations (institutional guidance linked to the article read) come with it: 0 for none, at most 30; omit for the default (10). `guidance.total` still counts every one linked.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / guidance_limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "How many explanations (institutional guidance linked to the article read) come with it: 0 for none, at most 30; omit for the default (10). `guidance.total` still counts every one linked.",
      +  "title": "Guidance Limit"
      +}
  2. Changed4 schema fields changed
    • addedInput schema / properties / count / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / count / default
      Previous value: -5New value: +null
    • changedInput schema / properties / count / description
      Previous value: -"How many paragraphs to return, default 5. The Civil Code runs to 1.7 million characters, so read in pages rather than asking for everything."New value: +"How many paragraphs to return, default 5. With `pinpoint`/`article` and no count you get that provision's own paragraphs; with a count, the read opens at the provision and reads on in document order (`pinpoint='31 p.', count=3` gives paragraphs 31-33). The Civil Code runs to 1.7 million characters, so read in pages rather than asking for everything."
    • removedInput schema / properties / count / type
      Removed value: -"integer"
  3. Changed2 schema fields changed
    • changedInput schema / properties / from_unit / description
      Previous value: -"Continue from this unit number, taken from `next_from_unit` in the previous answer. That is how paging works here; there is no cursor."New value: +"One-based position for a read without `pinpoint`/`article`, using the response's `document_id` without a `#` fragment. A `#` unit or pinpoint overrides it. Continue an unfiltered read with `next_from_unit`; that value from a pinpoint-filtered read is not a whole-document offset. There is no cursor."
    • changedInput schema / properties / on_date / description
      Previous value: -"On an act's article: `YYYY-MM-DD` - also return the article AS WORDED on that date (`wording_on_date`, with the edition's validity window and link), for facts that happened years ago. `paragraphs` stay the current text."New value: +"On an act's article: `YYYY-MM-DD` requests separate `wording_on_date`, with its edition window, link and held/composed/missing qualification. Passing the date does not make `paragraphs` historical: they contain the text served by this read. Inspect `version` and `wording` qualifications before treating that text as current law. Use the separate dated result only to the extent its evidence supports it."
  4. Changed1 schema field changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Which language version to read, as a two-letter code (`lt`, `en`, `fr`), for a document held in several languages; `<id>@en` in `document_id` does the same. Omit for the default version: Lithuanian where held, else the source language. Pinpoints are the same in every language; the answer names the language served and the others held.",
      +  "title": "Lang"
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / voice / description
      Previous value: -"On a ruling only: return only the paragraphs in this voice - `court` (strictly the court's own words; `court_all` also its restatements of earlier rulings), `party` (a party's argument or the question its appeal raises), `lower_court`, `institution`, `opinion`, or one voice name. Every paragraph of a ruling carries `voice` either way; a paragraph with more than one speaker is `mixed`, with each fragment's voice."New value: +"On a ruling only: return only the paragraphs in this voice - `court` (the court alone speaking, including its restatements of earlier rulings; `court_own` without them; `court_interpretation` its interpretation only), `party` (a party's argument or the question its appeal raises), `lower_court`, `institution`, `opinion`, or one voice name. Every paragraph of a ruling carries `voice` either way; a paragraph with more than one speaker is `mixed`, with each fragment's voice."
  6. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive safety profile, and the description adds substantially more: sign-in prerequisites via connect/connect_verify, that served text is not automatically current law and must be checked against version/wording, that on_date does not make paragraphs historical, and that # unit/pinpoint overrides from_unit with no cursor available. These are non-obvious traits an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the sign-in prerequisite, then core mechanics, then two worked argument examples, which is a sensible order for a 13-parameter tool. It is dense but mostly earns its length; minor redundancy appears in restating the '# overrides from_unit' and next_from_unit caveats already present in the schema descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema, the description compensates well: it names key response fields (paragraphs, version/wording, wording_on_date, next_from_unit, guidance.total) and explains how to continue a read. Auth, jurisdiction, language and ruling-specific behavior are all addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a 3 is the baseline, but the description adds genuine meaning beyond the schema: pinpoint vs article equivalence, the rule that a next_from_unit from a pinpoint-filtered read is not a whole-document offset, and the explicit absence of limit/max_chars parameters. It doesn't document every parameter (lang, voice, guidance_limit are only in the schema), so it doesn't reach 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read a document by its own structure') and immediately contrasts it with its closest sibling: 'Never by character offset (read_source_text reads the publisher's text that way, without our structure).' An agent can distinguish read_paragraphs from read_source_text, get_document and search_* without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: pinpoint for a single article, from_unit+count for paging, ruling_part=disposition for the operative order, and a named exclusion (character offsets belong to read_source_text). It also states the prerequisite for document_id (must come from a search hit's id or document.id, not a case number) and the ECHR exception where the tool is not the answer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources