io.github.matematicsolutions/br-eli-mcp
MCP server for Brazilian federal law: legislation, DataJud, STJ, CARF, TST, TCU citations.
Versions
0.6.0latestTools 15
br_search_proposicoes List Brazilian federal bills (proposicoes) of a given type and year. Args: sigla_tipo: bill type code, e.g. ``"PL"`` (Projeto de Lei), ``"PLP"``, ``"PEC"``. ano: year, e.g. ``2024``. itens: max results (default 20, API caps around 100). Returns: ``{"total": int, "items": [...]}`` - each item carries the citation contract.
br_get_proposicao Fetch full detail (including current status) for one bill by its numeric id. Args: id: the Camara dos Deputados proposicao id (from ``br_search_proposicoes``). Returns: A dict with ``sigla_tipo``, ``numero``, ``ano``, ``ementa``, ``situacao``, ``lex_uri``, ``human_readable_citation``, ``source_url``.
br_get_norma Resolve a Brazilian Norma Juridica (enacted law/decree/amendment) by its URN Lex. Identification + Diario Oficial da Uniao publication provenance + amendment history + any STF unconstitutionality notes - NOT the full compiled article text (no confirmed URL rule to Planalto; see DISCOVERY.md). Args: urn: a URN Lex, e.g. ``"urn:lex:br:federal:lei:2002-01-10;10406"`` (Codigo Civil). Must start with ``"urn:lex:br:"`` - never invent one, take it from the user or from another tool's output. Returns: A dict with ``tipo``, ``numero``, ``norma_nome``, ``apelido``, ``data_assinatura``, ``ementa``, ``observacao``, ``amendments``, ``lex_uri``, ``human_readable_citation``, ``source_url``.
br_get_norma_index List the addressable structure of a Norma Juridica: parts, books, titles, chapters, sections, and articles, in document order. Use this to find the `dispositivo` suffix for the article you need (e.g. `"art5"`), then pass it to `br_get_norma_texto` - do not guess a suffix. Args: urn: a URN Lex, e.g. ``"urn:lex:br:federal:lei:2002-01-10;10406"`` (Codigo Civil). Must start with ``"urn:lex:br:"``. Returns: ``{"urn": str, "total": int, "items": [{"suffix", "tipo", "name"}, ...]}``.
br_get_norma_texto Fetch the real text of one dispositivo (article, or a titulo/capitulo header) of a Norma Juridica. An article's text includes its caput and every paragraph/inciso/alinea beneath it, concatenated in document order - not a summary. Args: urn: a URN Lex, e.g. ``"urn:lex:br:federal:lei:2002-01-10;10406"``. dispositivo: a suffix from `br_get_norma_index`, e.g. ``"art5"``. Never guess one - a wrong suffix returns `not_found`, it does not silently fall back to a different article. Returns: A dict with ``dispositivo``, ``text``, ``lex_uri``, ``human_readable_citation``, ``source_url``.
br_search_processos Search court dockets (procedural metadata, NOT ruling text) in one tribunal's DataJud CNJ index. DataJud carries classe/assuntos/orgaoJulgador and the full procedural timeline (`movimentos`) for each docket - it does not carry the prose text of a ruling/acordao/ementa. STF is not covered (see server docstring). Args: tribunal: one of the supported tribunal codes, e.g. ``"STJ"``, ``"TST"``, ``"TRF1"``, ``"TJSP"``, ``"TRT2"``, ``"TRE-SP"``. query: free text - a CNJ process number (15+ digits) matches `numeroProcesso` exactly; anything else matches `classe.nome`. limit: max results (default 20). Returns: ``{"total": int, "items": [...]}`` - each item carries the citation contract.
br_get_processo Fetch one court docket by its exact CNJ unified process number. Args: tribunal: one of the supported tribunal codes, e.g. ``"STJ"``. numero_processo: the CNJ unified process number (digits, punctuation ignored), e.g. ``"5000035-87.2010.8.21.0057"``. Returns: A dict with ``numero_processo``, ``classe_nome``, ``orgao_julgador``, ``assuntos``, ``movimentos`` (full procedural timeline), ``human_readable_citation``, ``source_url``.
br_search_case_stj Search STJ (Superior Tribunal de Justica) acordaos - real ruling text. Unlike `br_search_processos` (DataJud, metadata only), this returns the actual `ementa` (headnote) and `decisao` (ruling body prose) from the STJ Open Data Portal. Scans the most recent monthly bulk files for one orgao julgador (chamber/section) - a miss means "not in the scanned window", not "does not exist". Coverage starts May 2022. Args: orgao: deciding chamber/section, one of the keys in the supported list, e.g. ``"CORTE ESPECIAL"``, ``"TERCEIRA TURMA"``. query: free text - a process/registration number (6+ digits) matches exactly; anything else matches `ministroRelator` or `ementa` (case-insensitive substring). limit: max results (default 20). Returns: ``{"total": int, "items": [...]}`` - each item carries the citation contract.
br_get_case_stj Fetch one STJ acordao by its exact numeroProcesso, with real ruling text. Args: orgao: deciding chamber/section, e.g. ``"CORTE ESPECIAL"``. numero_processo: the STJ process or registration number (digits; punctuation ignored). Returns: A dict with ``ementa``, ``decisao`` (full ruling prose), ``ministro_relator``, ``data_decisao``, ``human_readable_citation``, ``source_url``.
br_get_case_carf Fetch one CARF (tax appeals) acordao by exact docket or decision number. Exactly one of `numero_processo` / `numero_decisao` must be given - this is an exact lookup, not a search. There is no free-text search tool for CARF because its full-text index is not reliably populated upstream (confirmed empty on live probing for common Portuguese terms). Args: numero_processo: CARF docket number, e.g. ``"16095.000602/2007-70"``. numero_decisao: CARF decision number, e.g. ``"9101-002.402"``. Returns: A dict with ``ementa``, ``decisao_texto`` (full ruling prose), ``relator``, ``turma``/``camara``/``secao``, ``data_publicacao``, ``human_readable_citation``, ``source_url``.
br_search_case_tst Search TST (labor supreme court) rulings by free text - real ruling text. The query goes into the TST frontend's own "contendo as palavras" (AND) field - quote an expression for an exact-phrase match, e.g. ``"adicional de insalubridade"``. Returns the index's own total plus a page of records carrying the real `ementa` and `inteiro_teor` prose. Args: query: free text (AND semantics; quotes for exact phrase). tipo: document type - ``"ACORDAO"`` (default), ``"DESPACHO"``, ``"SUM"`` (sumulas), ``"OJ"`` (orientacoes jurisprudenciais), ``"PN"``, ``"DESPGP"``, ``"DESPGVP"``, ``"DESPGCG"``. limit: max results per page (default 20). Returns: ``{"total": int, "items": [...]}`` - `total` is the TST index's own `totalRegistros` for the whole query, not the page size.
br_get_case_tst Fetch one TST ruling by its exact CNJ unified process number - real ruling text (`ementa` + `inteiro_teor`). Args: numero_processo: CNJ unified process number, formatted (``"21036-38.2019.5.04.0021"``) or as the raw 20 digits. The fifth segment is 5 (Justica do Trabalho) for every TST case. tipo: document type (default ``"ACORDAO"``). Returns: A dict with ``numero_formatado``, ``nome_relator``, ``orgao_judicante``, ``data_julgamento``, ``ementa``, ``inteiro_teor`` (full ruling prose), ``human_readable_citation``, ``source_url``.
br_search_case_tcu Search TCU (Federal Court of Accounts) acordaos - public-procurement and public-spending jurisprudence. Returns summaries (`sumario`) plus the index's own total. Use `br_get_case_tcu` for the full ruling text of one acordao. The query supports the portal's own field-scoped syntax in addition to plain words, e.g. ``NUMACORDAO:1771 ANOACORDAO:2026``. Args: query: free text or field-scoped query. limit: max results (default 20). Returns: ``{"total": int, "items": [...]}`` - `total` is the TCU index's own `quantidadeEncontrada` for the whole query, not the page size.
br_coverage Declare what this connector covers, how it is sourced, and what it does NOT cover. Call this before telling a user that the law "does not contain" something, and whenever a search comes back empty: the absence may be a gap in this connector rather than in the law. Every gap carries a fallback saying where to look instead. Returns: ``Coverage`` with families, an as-of note, and a non-empty list of known gaps.
br_get_case_tcu Fetch one TCU acordao with the real ruling text: `acordao_texto` (deliberation), `relatorio` (rapporteur's report) and `voto` (vote). A TCU acordao is uniquely identified by (numero, ano, colegiado) - the same numero/ano recurs across the Plenario and the two Camaras. When `colegiado` is omitted and more than one acordao matches, this errors and lists the matching bodies instead of guessing. Args: numero: acordao number, e.g. ``"1771"``. ano: four-digit year, e.g. ``"2026"``. colegiado: deciding body - ``"Plenário"``, ``"Primeira Câmara"`` or ``"Segunda Câmara"`` (accent-sensitive, as spelled in the index). Returns: A dict with ``numero``, ``ano``, ``colegiado``, ``relator``, ``data_sessao``, ``sumario``, ``acordao_texto``, ``relatorio``, ``voto``, ``human_readable_citation``, ``source_url``.
Permissions 3
network medium filesystem low env_vars low