← Files IAJUSARCHIVED FILE

skills/consultar-legislacao-estadual/SKILL.md

10.4 KB · Oct 5, 2026 · 18:12 UTC

↓ Download file

---
name: consultar-legislacao-estadual
description: Consulta legislação ESTADUAL e MUNICIPAL brasileira pelo MCP IAJUS, buscando texto e link da fonte oficial quando disponíveis. O catálogo estático registra adaptadores para as 27 UFs, sem medir disponibilidade atual. Acione para lei, decreto ou norma de estado/município, inclusive texto integral. Requer UF (+ município) + tipo + número + ano. NÃO use para legislação FEDERAL nem para acórdãos/súmulas.
allowed-tools: mcp__iajus__buscar_norma_fonte_oficial, mcp__plugin_iajus-juris_iajus__buscar_norma_fonte_oficial, mcp__iajus__obter_texto_norma, mcp__plugin_iajus-juris_iajus__obter_texto_norma, mcp__iajus__obter_cobertura_legislacao, mcp__plugin_iajus-juris_iajus__obter_cobertura_legislacao
---

# Consultar legislação estadual e municipal brasileira ao vivo (IAJUS)

Você tem acesso ao servidor MCP `iajus`, que consulta **legislação estadual e municipal**
brasileira **ao vivo** na fonte oficial de cada UF/município (assembleia legislativa,
câmara municipal, diário oficial). A consulta é em tempo real: use o MCP em vez de citar
de memória, pois **o texto da fonte oficial é a verdade**.

Estas tools vivem no **mesmo** servidor MCP `iajus` das demais skills (mesma URL, mesma
autenticação). Não há credencial nem host novos.

## Envelope de desfecho

Leia a chave `desfecho` ANTES de qualquer contagem. Os cinco valores são mutuamente exclusivos:

- `erro` — a consulta FALHOU; ninguém olhou o acervo. Não é ausência.
- `sem_resultado` — a consulta RODOU e o acervo não tem. Zero MEDIDO.
- `nao_terminou` — timeout ou teto. NÃO-MEDIDO; não afirme que «não existe».
- `parcial` — mediu uma parte; declare o que ficou de fora.
- `medida_indisponivel` - a fonte respondeu e NÃO carrega a medida. NÃO-MEDIDO sem avaria; não é zero.

`total: 0` só é ausência medida quando `desfecho` é `sem_resultado`. Sem `desfecho`, ou com `erro`/`nao_terminou`, repasse a falha — nunca «essa UF não é coberta».

## Regra número zero: NUNCA recuse uma UF por conta própria

O catálogo estático do servidor registra **adaptador nativo para as 27 UFs (26 estados +
o Distrito Federal)**. Não existe UF a recusar de antemão. Para QUALQUER UF que o usuário citar,
**chame a tool** (`buscar_norma_fonte_oficial` / `obter_texto_norma`) e **repasse o que o
servidor devolver**:

- Se o servidor retornar a norma, cite-a com o `link_completo` oficial.
- Se `desfecho` for `sem_resultado`, a fonte foi consultada e não tem a norma.
- Se `desfecho` for `erro` ou `nao_terminou` (fonte fora do ar, deadline), **repasse
  a falha** — o vazio não foi medido, nunca prejulgue a UF.

Não invente a norma e não afirme "essa UF ainda não é coberta". A disponibilidade só é
comprovada pela consulta pontual ao vivo. Use `obter_cobertura_legislacao` apenas para
conhecer o adaptador e ajustar a expectativa de resposta antes da consulta.

## Comece pela cobertura: o que a UF cobre

Para uma UF que você não conhece, chame **`obter_cobertura_legislacao`** (`uf="SP"`) primeiro:
ela lista, sem fan-out lento, o estado + os municípios cobertos naquela UF e a prontidão de
cada um. É o melhor ponto de partida antes de uma consulta estadual/municipal direcionada.
Sem argumentos, `obter_cobertura_legislacao` devolve a prontidão de todas as 27 UFs.

Essa tool lê um **catálogo estático**: **não acessa a fonte oficial** e **não inclui `verified_at` nem `as_of`**.
Portanto, não comprova disponibilidade atual. A prova ao
vivo vem somente de `buscar_norma_fonte_oficial` ou `obter_texto_norma` para uma norma.

## Catálogo estático de cobertura por UF (sem as_of)

As 27 UFs têm adaptador registrado no catálogo. A prontidão descreve a capacidade esperada
do adaptador, não o estado atual da fonte:

- **`ready`** (texto integral previsto no catálogo - 6 UFs):
  **BA** (LegislaBahia), **GO** (Legisla Goiás API v2), **MG** (ALMG API v2), **MS**
  (SECOGE/Domino), **RO** (SAPL REST), **SP** (ALESP). Resolve + ementa + texto integral.
- **`resolve_ementa`** (resolve + ementa + link oficial confiáveis; inteiro teor best-effort,
  às vezes só em PDF - as 21 demais UFs, incluindo **DF** (CLDF PLE + SINJ), **RJ** (SAOE/Casa
  Civil), **CE**, **PE**, **RN**, **SC**, **AP**, **ES**, **SE**, **MT**, **MA**, **PA**,
  **PR**, **RS**, **AC**, **AL**, **AM**, **PB**, **PI**, **RR**, **TO** (estas 7 via SAPL
  Interlegis)). O campo `tem_texto_integral` por consulta avisa se o texto integral veio.

> Regra REAL: nunca afirme que uma norma específica existe se a consulta pontual não a
> retornou. `ready` é um rótulo de capacidade do catálogo sem frescor, não prova que a fonte
> está disponível nem que a norma existe. Se a consulta não resolver, repasse o
> `erro`/`aviso` do servidor e diga honestamente que a norma não foi localizada na fonte,
> sem prejulgar a UF inteira.

## Como consultar

A **UF é obrigatória** em toda consulta estadual; para municipal, **UF + município**. Junto
com **tipo + número + ano** (a consulta resolve a norma por identidade, não por busca
textual livre).

| Necessidade | Tool | Argumentos |
|---|---|---|
| Catálogo estático de uma UF (estado + municípios) | `obter_cobertura_legislacao` | `uf` |
| Catálogo estático das 27 UFs, sem frescor | `obter_cobertura_legislacao` | (sem argumentos) |
| Metadados de uma norma ESTADUAL (link oficial, ementa, data) | `buscar_norma_fonte_oficial` | `uf`, `tipo`, `numero`, `ano` |
| Texto íntegra de uma norma ESTADUAL | `obter_texto_norma` | `uf`, `tipo`, `numero`, `ano` |
| Metadados de uma norma MUNICIPAL | `buscar_norma_fonte_oficial` | `uf`, `municipio`, `tipo`, `numero`, `ano` |
| Texto íntegra de uma norma MUNICIPAL | `obter_texto_norma` | `uf`, `municipio`, `tipo`, `numero`, `ano` |

Notas de uso:
- **`uf` é sempre obrigatória; para municipal, `municipio` também.** Sem isso a consulta é
  ambígua: peça ao usuário (leis de mesmo número existem em estados/municípios diferentes).
- `tipo` é a espécie normativa (`LEI`, `DECRETO`, `LEI COMPLEMENTAR`, …); `numero` e `ano`
  identificam a norma. Esta consulta **não** faz busca por tema/assunto: se o usuário só
  descreve o assunto, peça (ou ajude a descobrir) tipo/número/ano.
- A consulta é **ao vivo**: pode ser mais lenta e depende da fonte oficial. Se a fonte
  estiver fora do ar ou não retornar a norma, o campo `erro`/`aviso` diz isso -
  **repasse ao usuário**, não invente.

## Método (o caminho subnacional difere do federal)

A legislação estadual/municipal resolve **por identidade** (UF [+ município] + tipo +
número + ano), NÃO por busca textual livre de tema. E, como no federal, **não há piso
temporal**: a vigência é a da fonte, nunca uma função do ano. Numa tarefa grande (dossiê
que amarra normas de vários entes), delegue ao subagente `legislacao-juris` (ver
Subagentes); num cliente sem subagentes, execute você mesmo. O fluxo:

1. **Ajuste a expectativa pelo catálogo estático.** Para uma UF que você não conhece, chame
   `obter_cobertura_legislacao` (`uf="SP"`) antes - ela lista, sem fan-out lento, o estado
   + os municípios cobertos e a **prontidão** de cada um (`ready` = texto integral robusto
   vs `resolve_ementa` = ementa + link confiáveis, inteiro teor best-effort). Assim você
   ajusta a expectativa, mas ainda precisa da consulta pontual ao vivo para comprovar a
   disponibilidade e o conteúdo.
2. **Resolva a norma por identidade.** Com UF [+ município] + tipo + número + ano, chame
   `buscar_norma_fonte_oficial` para os metadados (link oficial deep-per-norma, ementa,
   data). Se o usuário só descreve o assunto, peça (ou ajude a montar) tipo/número/ano -
   esta superfície não faz busca por tema.
3. **Leia o texto vigente.** Se o usuário quer o inteiro teor, chame `obter_texto_norma`
   com os mesmos argumentos de identidade. Cite a redação **como a fonte devolveu**; o campo
   `tem_texto_integral` por consulta avisa se o texto integral veio ou se só há ementa + link.
4. **Repasse o vazio honesto.** Se a consulta pontual não resolver (norma não localizada na
   fonte, fonte fora do ar, deadline), repasse o `erro`/`aviso` do servidor e diga que a
   norma não foi localizada na fonte - sem prejulgar a UF inteira e sem inventar a norma.

Confira a vigência antes de amparar: cite a UF (e o município, quando municipal), o tipo, o
número/ano e o `link_completo` oficial - nunca uma redação de memória.

## Regras de citação (obrigatório)

- Cite a **UF** (e o **município**, quando municipal), o tipo, o número/ano e a redação
  como retornada pela fonte. Sempre inclua o **`link_completo`** (URL oficial deep-per-norma)
  e **nunca invente** número, redação ou link.
- Deixe claro que a fonte é **estadual** ou **municipal** e de **qual UF/município**.
- Preserve grafia e diacríticos exatamente como na fonte (UTF-8).
- Se a norma não for encontrada, **diga isso** repassando o `erro`/`aviso` do servidor -
  uma consulta pontual pode não resolver mesmo numa UF coberta.

## Subagentes IAJUS (Claude Code)

No **Claude Code**, delegue uma tarefa normativa grande a subagentes especializados
(invoque via Task/subagent pelo nome). Em clientes **sem subagentes** (claude.ai web,
ChatGPT, Codex), **execute você mesmo o método acima** - não delegue.

- **`legislacao-juris`** - norma aplicável de qualquer ente (federal, estadual ou
  municipal) num só dossiê, com a cobertura por UF já ajustada.
- **`memorialista-juris`** - parecer/peça que amarra normas subnacionais + jurisprudência,
  com citação verificável de cada fundamento.
- **`conferente-citacoes`** - **feche a entrega com ele** (anti-alucinação): confere cada
  norma estadual/municipal citada contra a fonte oficial ao vivo antes do texto final.

## Boas práticas

- Comece por `obter_cobertura_legislacao` para ler o catálogo estático da UF; ajuste a
  expectativa (`ready` = texto integral previsto vs `resolve_ementa` = ementa + link + texto
  best-effort) e confirme tudo pela consulta pontual ao vivo.
- Confirme a norma com `buscar_norma_fonte_oficial` (link + data); só então `obter_texto_norma`
  se o usuário quiser o inteiro teor.
- **Autenticação:** **OAuth 2.1 é o caminho canônico**; o cliente abre o navegador no primeiro
  login. A chave `ik_*` é apenas fallback documentado para canal CLI/privado no header
  `Authorization: Bearer`. Um **401** indica sessão/chave ausente ou expirada: peça ao
  usuário para refazer o login ou revisar a chave; **nunca** cole a chave em chat nem em commit.

SHA-256: f68409a1295e99f32b8d8ec4df724a7eec73c2d69bd6b2b0e0546cb1f3a90646