← Files IAJUSARCHIVED FILE
skills/consultar-legislacao-estadual/SKILL.md
10.4 KB · Oct 5, 2026 · 18:12 UTC
--- 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