# Arc Flash Platform — Estudos Elétricos

> Cálculos de engenharia elétrica pela norma brasileira (NBR), validados, com citação normativa.

- name: io.github.alessandropeng/arc-flash-platform
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 73/100 flags: no-repository
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.alessandropeng%2Farc-flash-platform
- tools: https://api.protogrid.dev/v1/servers/io.github.alessandropeng%2Farc-flash-platform/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "arc-flash-platform": {
      "type": "http",
      "url": "https://arc-flash-platform.onrender.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 65
- provenance: 45
- drivers: +website +reachable +uptime-100% ~updated-112d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 4 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 21 of 21 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: listar_ferramentas (destructiveHint, idempotentHint, openWorldHint); calcular_curto_circuito (destructiveHint, idempotentHint, openWorldHint); montar_rede (destructiveHint, idempotentHint, openWorldHint); …
- warn `tools.token_cost`: about 10,583 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 15 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 21, about 10,583 tokens to load them all
- tool set hash: 604de260301a21545899b13cba944933
- tools last changed: 2026-10-17T15:53:14.148Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.alessandropeng/arc-flash-platform.svg)](https://protogrid.dev/servers/io.github.alessandropeng/arc-flash-platform)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-17 `montar_rede` changed (description)
  - before: Monta uma REDE MULTIBARRA (concessionária e/ou gerador → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. Cada raiz tem de ser uma FONTE: a concessionária ou a barra de um gerador. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e 3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a fase-terra e a bifásica-terra, nunca o arco. element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária (omita na rede só com gerador) ── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a ecoa em `fonte_minima_declarada_kA`. ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── geradores (opcional): gerador SÍNCRONO como fonte (IEC 60909-0 §6.6.1) ── {"bus_id":"GMG","label":"GMG-01","Sn_kVA":360,"xd2_pu":0.15,"cos_phi":0.8, "x0_pu":0.08
  - after: Monta uma REDE MULTIBARRA (concessionária e/ou gerador → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir no Workspace da plataforma (app.estudoseletricos.com/workspace/, botão "Abrir") — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. Cada raiz tem de ser uma FONTE: a concessionária ou a barra de um gerador. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e 3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a fase-terra e a bifásica-terra, nunca o arco. element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária (omita na rede só com gerador) ── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a ecoa em `fonte_minima_declarada_kA`. ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── geradores (opcional): gerador SÍNCRONO como fonte (IEC 60909-0 §6.6.1) ── {"bus_id":"GMG","label":"GMG-01","Sn
- 2026-10-16 `montar_rede` changed (description, inputSchema)
  - before: Monta uma REDE MULTIBARRA (concessionária → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e 3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a fase-terra e a bifásica-terra, nunca o arco. element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária ──────────────────────────────── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a ecoa em `fonte_minima_declarada_kA`. ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── estudo (opcional): opções do estudo de arco que o projeto leva ───────── {"banda_padrao":"norma", "t_sem_atuacao_ms":2000, "base_ibf":"pior_caso"} Todas nascem DESLIGADAS (ausentes ou null) e não mudam o curto calculado aqui: vão no `projeto_json` par
  - after: Monta uma REDE MULTIBARRA (concessionária e/ou gerador → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. Cada raiz tem de ser uma FONTE: a concessionária ou a barra de um gerador. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e 3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a fase-terra e a bifásica-terra, nunca o arco. element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária (omita na rede só com gerador) ── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a ecoa em `fonte_minima_declarada_kA`. ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── geradores (opcional): gerador SÍNCRONO como fonte (IEC 60909-0 §6.6.1) ── {"bus_id":"GMG","label":"GMG-01","Sn_kVA":360,"xd2_pu":0.15,"cos_phi":0.8, "x0_pu":0.08
- 2026-10-14 `tempo_de_atuacao` changed (description, inputSchema)
  - before: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). O tempo é o da borda LENTA da banda de tolerância, a mesma régua do estudo da plataforma: no modelo do catálogo que declara a banda do fabricante ela é aplicada (`banda: "fabricante"`); sem banda declarada, informe `tolerancia_pct` (± %, só na instantânea — a do manual do seu disjuntor; a IEC 60947-2 admite ±20 % no disparador de curto-circuito) e a instantânea sobe para o extremo de cima (`banda: "informada"`); sem nada, a curva ajustada (`banda: "nenhuma"`). A corrente de arco REDUZIDA que fica entre o ajuste e o extremo da banda cai na curva térmica — e é ela que costuma governar a energia. MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos); `tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2 (3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador. Gratuito (uso limitado).
  - after: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). O tempo é o da borda LENTA da banda de tolerância, a mesma régua do estudo da plataforma: no modelo do catálogo que declara a banda do fabricante ela é aplicada (`banda: "fabricante"`); sem banda declarada, informe `tolerancia_pct` (± %, só na instantânea — a do manual do seu disjuntor; a IEC 60947-2 admite ±20 % no disparador de curto-circuito) e a instantânea sobe para o extremo de cima (`banda: "informada"`); sem nada, a curva ajustada (`banda: "nenhuma"`). A corrente de arco REDUZIDA que fica entre o ajuste e o extremo da banda cai na curva térmica — e é ela que costuma governar a energia. MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos); `tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2 (3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador. CURVA TÉRMICA TABELADA (termomagnético, cuja térmica não é IEC/IEEE): `curva_pontos` = [[múltiplo, t_s], …] lidos da tabela do manual (a borda de cima; múltiplo crescente, tempo que não cresce) e `curva_base` = 'Ir' ou 'In' (de qual corrente são os múltiplos — obrigatória). A região inversa sai desses pontos (interpolação log-log) no lugar da `curva`; a resposta traz `curva_tabelada`. Nunca leia pontos de um GRÁFICO: só de tabela. Gratuito (uso limitado).
- 2026-10-14 `montar_rede` changed (description)
  - before: Monta uma REDE MULTIBARRA (concessionária → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária ──────────────────────────────── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── estudo (opcional): opções do estudo de arco que o projeto leva ───────── {"banda_padrao":"norma", "t_sem_atuacao_ms":2000} Ambas nascem DESLIGADAS (ausentes ou null) e não mudam o curto calculado aqui: vão no `projeto_json` para o Workspace estudar o arco com elas. `banda_padrao` "norma" = ±20 % na instantânea do disjuntor termomagnético sem banda declarada (IEC 60947-2). `t_sem_atuacao_ms` = tempo máximo de arco (> 0 e ≤ 2000 ms) para a barra cuja proteção não vê a falta. Valor fora disso é erro de forma. A resposta ecoa `estudo`. Erro de FORMA (campo faltando, valor não-numérico) e erro de FÍSICA (tensões que não casam num cabo, trafo sem Sn/Vcc, duas alimentações para a mesma barra) voltam em {"erro": ...} explicando o que corrigir — nada é calculado "pela metade". Gratuito
  - after: Monta uma REDE MULTIBARRA (concessionária → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e 3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a fase-terra e a bifásica-terra, nunca o arco. element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária ──────────────────────────────── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a ecoa em `fonte_minima_declarada_kA`. ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── estudo (opcional): opções do estudo de arco que o projeto leva ───────── {"banda_padrao":"norma", "t_sem_atuacao_ms":2000, "base_ibf":"pior_caso"} Todas nascem DESLIGADAS (ausentes ou null) e não mudam o curto calculado aqui: vão no `projeto_json` par
- 2026-10-14 `calcular_curto_circuito` changed (description, inputSchema)
  - before: Curto-circuito (IEC 60909) pelo motor da plataforma: Icc 3φ/2φ/fase-terra, X/R e pico. Informe a rede por `potencia_curto_mva` OU `icc_rede_kA`. `com_transformador=True` dá o Icc no secundário (trafo_*). `xr_rede`/`xr_trafo` = relações X/R (regem κ, pico ip e assimetria — o making do disjuntor); `tipo_aterramento` ∈ {solido, resistivo, isolado} + `Rn_ohm` regem a corrente de falta fase-terra (Icc_1φ). `com_cabo=True` (+ cabo_secao_mm2/cabo_m) dá o Icc no PONTO de instalação após o cabo (menor que no barramento). Gratuito (uso limitado).
  - after: Curto-circuito (IEC 60909) pelo motor da plataforma: Icc 3φ/2φ/fase-terra, X/R e pico. Informe a rede por `potencia_curto_mva` OU `icc_rede_kA`. `com_transformador=True` dá o Icc no secundário (trafo_*). `xr_rede`/`xr_trafo` = relações X/R (regem κ, pico ip e assimetria — o making do disjuntor); `tipo_aterramento` ∈ {solido, resistivo, isolado} + `Rn_ohm` regem a corrente de falta fase-terra (Icc_1φ). `com_cabo=True` (+ cabo_secao_mm2/cabo_m) dá o Icc no PONTO de instalação após o cabo (menor que no barramento). `fator_c` (nulo = a Tabela 1 da IEC 60909) e `aplicar_kt` (True = K_T do §6.3.3) são a BASE: `fator_c` 1,0 com `aplicar_kt=False` reproduz um estudo feito em tensão nominal, FORA do §7.1.2 — a resposta avisa. Gerador como fonte em BT: use xr_rede ≈ 6,7 (X″d/R_Gf, §6.6.1), não 10 ou 20. Gratuito (uso limitado).
- 2026-10-09 `tempo_de_atuacao` changed (description, inputSchema)
  - before: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos); `tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2 (3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador. Gratuito (uso limitado).
  - after: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). O tempo é o da borda LENTA da banda de tolerância, a mesma régua do estudo da plataforma: no modelo do catálogo que declara a banda do fabricante ela é aplicada (`banda: "fabricante"`); sem banda declarada, informe `tolerancia_pct` (± %, só na instantânea — a do manual do seu disjuntor; a IEC 60947-2 admite ±20 % no disparador de curto-circuito) e a instantânea sobe para o extremo de cima (`banda: "informada"`); sem nada, a curva ajustada (`banda: "nenhuma"`). A corrente de arco REDUZIDA que fica entre o ajuste e o extremo da banda cai na curva térmica — e é ela que costuma governar a energia. MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos); `tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2 (3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador. Gratuito (uso limitado).
- 2026-10-09 `montar_rede` changed (description, inputSchema)
  - before: Monta uma REDE MULTIBARRA (concessionária → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária ──────────────────────────────── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} Erro de FORMA (campo faltando, valor não-numérico) e erro de FÍSICA (tensões que não casam num cabo, trafo sem Sn/Vcc, duas alimentações para a mesma barra) voltam em {"erro": ...} explicando o que corrigir — nada é calculado "pela metade". Gratuito (uso limitado).
  - after: Monta uma REDE MULTIBARRA (concessionária → transformadores → cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez, pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita alimentação radial, em paralelo e malha). Use quando o usuário tem os dados de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta da concessionária ou um memorial antigo — em vez de chamar `calcular_curto_circuito` (que é de UM ponto) várias vezes. Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir em "Abrir projeto" no app — a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco elétrico e memorial. Nenhum valor extraído de documento deve virar laudo sem essa conferência humana. ── barras: lista de objetos ──────────────────────────────────────────────── {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48} `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta para ela) — é ela a raiz da rede. ── elementos: lista de objetos (o que liga uma barra à outra) ────────────── element_type "transformer": {"from_id","to_id","element_type":"transformer", "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null} Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre; `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita 'solido' ou 'resistivo' (este exige Rn_ohm), como no `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca da `fonte`. element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable", "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1} Liga barras de MESMA tensão (para mudar de tensão use "transformer"). element_type "reactor": {"from_id","to_id","element_type":"reactor", "u_kR_pct":6,"I_rR_A":400} (reator limitador, §6.5 — u_kR e I_rR de plaqueta) ── fonte: a contribuição da concessionária ──────────────────────────────── {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0} Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária, não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0). ── motores (opcional): contribuição de motores por barra ────────────────── {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92, "Xd_sub_pu":0.17} ── estudo (opcional): opções do estudo de arco que o projeto leva ───────── {"banda_padrao":"norma", "t_sem_atuacao_ms":2000} Ambas nascem DESLIGADAS (ausentes ou null) e não mudam o curto calculado aqui: vão no `projeto_json` para o Workspace estudar o arco com elas. `banda_padrao` "norma" = ±20 % na instantânea do disjuntor termomagnético sem banda declarada (IEC 60947-2). `t_sem_atuacao_ms` = tempo máximo de arco (> 0 e ≤ 2000 ms) para a barra cuja proteção não vê a falta. Valor fora disso é erro de forma. A resposta ecoa `estudo`. Erro de FORMA (campo faltando, valor não-numérico) e erro de FÍSICA (tensões que não casam num cabo, trafo sem Sn/Vcc, duas alimentações para a mesma barra) voltam em {"erro": ...} explicando o que corrigir — nada é calculado "pela metade". Gratuito
- 2026-10-09 `calcular_energia_incidente` changed (description)
  - before: Energia incidente (Ei, cal/cm²), LAS e categoria de EPI de um arco elétrico, pelo motor IEEE 1584:2018 / ABNT NBR 17227:2025 VALIDADO da plataforma (208 V– 15 kV). `config` ∈ {VCB,VCBB,HCB,VOA,HOA}. Dois patamares de corrente (IEEE 1584:2018 §4.12): `t_arc_s` = tempo de eliminação da proteção na corrente de arco PLENA (Iarc); `t_arc_reduzido_s` = tempo na corrente REDUZIDA (Imin ≈ 0,88·Iarc). Como a corrente reduzida costuma limpar mais devagar (proteção de tempo inverso), o patamar reduzido com frequência GOVERNA o pior caso. Havendo dispositivo com curva inversa, forneça os DOIS tempos; sem `t_arc_reduzido_s`, calcula um único patamar. `larg_mm/alt_mm/prof_mm` = invólucro REAL do equipamento (a correção de tamanho da §4.8 muda o Ei; default = caixa de referência 508³). Gratuito (uso limitado).
  - after: Energia incidente (Ei, cal/cm²), LAS e categoria de EPI de um arco elétrico, pelo motor IEEE 1584:2018 / ABNT NBR 17227:2025 VALIDADO da plataforma (208 V– 15 kV). `config` ∈ {VCB,VCBB,HCB,VOA,HOA}. Dois patamares de corrente (IEEE 1584:2018 §4.12): `t_arc_s` = tempo de eliminação da proteção na corrente de arco PLENA (Iarc); `t_arc_reduzido_s` = tempo na corrente REDUZIDA (Imin ≈ 0,88·Iarc). Como a corrente reduzida costuma limpar mais devagar (proteção de tempo inverso), o patamar reduzido com frequência GOVERNA o pior caso. Havendo dispositivo com curva inversa, forneça os DOIS tempos; sem `t_arc_reduzido_s`, calcula um único patamar. `larg_mm/alt_mm/prof_mm` = invólucro REAL do equipamento (a correção de tamanho da §4.8 muda o Ei; default = caixa de referência 508³). A resposta declara `criterio_ibf: "informado_pelo_usuario"`: a Ibf é a que você passou — se veio de `calcular_curto_circuito`/`montar_rede`, é a máxima IEC 60909 (c_max); qualquer outra base (mínima, 1,0 pu) é escolha sua e deve ser dita ao usuário. Gratuito (uso limitado).
- 2026-10-08 `tempo_de_atuacao` changed (description, inputSchema)
  - before: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE); `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos). Gratuito (uso limitado).
  - after: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51 inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s` daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão). MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva` ∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI, LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms` (50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais — sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos); `tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2 (3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador. Gratuito (uso limitado).
- 2026-10-08 `dessintonia_capacitor` changed (description)
  - before: Banco dessintonizado (reator série anti-ressonância). Informe `p_pct` (fator de dessintonia XL/XC, ex.: 7 ou 14) OU `L_mH`. Devolve a tensão ELEVADA no capacitor V/(1−p), a corrente pelo reator, o reativo efetivo Q/(1−p), a frequência de sintonia e a classe de tensão sugerida do capacitor (IEC 60831). Com `scc_MVA`, avalia a ressonância paralela com a rede. Gratuito.
  - after: Banco dessintonizado ou filtro sintonizado (reator série com o capacitor). Informe `p_pct` (fator XL/XC, ex.: 7 ou 14) OU `L_mH`. Devolve a tensão ELEVADA no capacitor V/(1−p), a corrente pelo reator, o reativo efetivo Q/(1−p), a frequência de sintonia e a classe de tensão sugerida do capacitor (IEC 60831). A leitura do ramo segue a sintonia: a partir de p = 5,67 % (4,2ª) é banco dessintonizado; entre 4 % e 5,67 % é filtro sintonizado perto da 5ª; abaixo de 4 %, a sintonia fica acima da 5ª. `Un_cap_kV` = tensão nominal do capacitor ou do banco montado, entre fases: a tool verifica o contínuo de 1,10·Un. Acima de 24 kV a tool não sugere classe e pede essa tensão. Com `scc_MVA`, avalia a ressonância paralela com a rede. Gratuito.

Full history: https://api.protogrid.dev/v1/servers/io.github.alessandropeng%2Farc-flash-platform/changes

## Remotes

- https://arc-flash-platform.onrender.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (21)

- `calcular_curto_circuito`: Curto-circuito (IEC 60909) pelo motor da plataforma: Icc 3φ/2φ/fase-terra,
X/R e pico. Informe a rede por `potencia_curto_mva` OU `icc_rede_kA`.
`com_transformador=True` dá o Icc no secundário (trafo_*). `xr_rede`/`xr_trafo`
= relações X/R (regem κ, pico ip e assimetria — o making do disjuntor);
`tipo_aterramento` ∈ {solido, resistivo, isolado} + `Rn_ohm` regem a corrente de
falta fase-terra (Icc_1φ). `com_cabo=True` (+ cabo_secao_mm2/cabo_m) dá o Icc no
PONTO de instalação após o cabo (menor que no barramento). `fator_c` (nulo = a
Tabela 1 da IEC 60909) e `aplicar_kt` (True = K_T do §6.3.3) são a BASE: `fator_c`
1,0 com `aplicar_kt=False` reproduz um estudo feito em tensão nominal, FORA do
§7.1.2 — a resposta avisa. Gerador como fonte em BT: use xr_rede ≈ 6,7
(X″d/R_Gf, §6.6.1), não 10 ou 20. Gratuito (uso limitado).
- `calcular_energia_incidente`: Energia incidente (Ei, cal/cm²), LAS e categoria de EPI de um arco elétrico,
pelo motor IEEE 1584:2018 / ABNT NBR 17227:2025 VALIDADO da plataforma (208 V–
15 kV). `config` ∈ {VCB,VCBB,HCB,VOA,HOA}.

Dois patamares de corrente (IEEE 1584:2018 §4.12): `t_arc_s` = tempo de
eliminação da proteção na corrente de arco PLENA (Iarc); `t_arc_reduzido_s` =
tempo na corrente REDUZIDA (Imin ≈ 0,88·Iarc). Como a corrente reduzida costuma
limpar mais devagar (proteção de tempo inverso), o patamar reduzido com
frequência GOVERNA o pior caso. Havendo dispositivo com curva inversa, forneça
os DOIS tempos; sem `t_arc_reduzido_s`, calcula um único patamar.

`larg_mm/alt_mm/prof_mm` = invólucro REAL do equipamento (a correção de tamanho
da §4.8 muda o Ei; default = caixa de referência 508³).

A resposta declara `criterio_ibf: "informado_pelo_usuario"`: a Ibf é a que
você passou — se veio de `calcular_curto_circuito`/`montar_rede`, é a máxima
IEC 60909 (c_max); qualquer outra base (mínima, 1,0 pu) é escolha sua e deve
ser dita ao usuário. Gratuito (uso limitado).
- `calcular_energia_incidente_hv`: Energia incidente para sistemas > 15 kV — FORA do IEEE 1584:2018 / NBR 17227
(arco ao ar livre fase-terra). É TRIAGEM, NÃO laudo: o motor IEEE 1584 da plataforma
NÃO é usado; gap e configuração de eletrodos não se aplicam.

`metodo` ∈ {osha (padrão), lee, epri}:
  • osha — OSHA 1910.269 Apêndice E, Tab. 6/7 (base ArcPro). `tipo_trabalho` ∈
    {luva (Tab.6, 4–46 kV), vara (Tab.7, 4–800 kV)}. Devolve a BANDA de EPI
    conservadora (≤4/5/8/12 ou >12 cal/cm²), não um ponto.
  • lee — cota TEÓRICA superior; exige `dist_trabalho_mm`.
  • epri — modelo de alta tensão; exige `dist_trabalho_mm` + `comprimento_arco_m`
    (vão físico fase-terra, em metros).
Gratuito (uso limitado).
- `corrigir_fator_potencia`: Dimensiona o banco de capacitores para corrigir o fator de potência à
meta (REN ANEEL nº 1.000; FP-alvo padrão 0,92). Com `tensao_kV` também dá a
corrente nominal do banco e a norma (IEC 60831/60871).
`Un_cap_kV` = tensão de placa do capacitor: se ele opera abaixo da Un, entrega
MENOS kvar (derating Q∝V²) e a correção real cai — informe p/ não superestimar.
`carga_min_pct` = carregamento mínimo (%): dispara o alerta de SOBRECORREÇÃO
capacitiva (banco fixo em carga leve → FP capacitivo, faturável).
`scc_MVA` = curto na barra do banco → inrush de manobra e a corrente de PROJETO
da proteção/cabo do banco (1,5·In BT, IEEE C37.012). Gratuito.
- `dano_transformador`: Curva de dano a faltas passantes do transformador (IEEE C57.109/C57.12.59):
categoria, corrente de falta passante máxima (In/Z), ponto ANSI e ponto de
inrush — para coordenar a proteção a montante. `fases` ∈ {3ph,1ph};
`frequencia_falta` ∈ {infrequent,frequent}; `tipo` ∈ {liquid,dry};
`t_inrush_ms` = patamar de tempo do ponto de inrush. `ligacao` (IEEE C37.91)
refere a curva ao OUTRO lado para coordenar com a proteção de lá: {dyg,ygd}
Δ-Yg ×0,58 · {dd,yy} ×0,87 · {ygyg,none} ×1,0. Gratuito (uso limitado).
- `dessintonia_capacitor`: Banco dessintonizado ou filtro sintonizado (reator série com o capacitor).
Informe `p_pct` (fator XL/XC, ex.: 7 ou 14) OU `L_mH`. Devolve a tensão ELEVADA
no capacitor V/(1−p), a corrente pelo reator, o reativo efetivo Q/(1−p), a
frequência de sintonia e a classe de tensão sugerida do capacitor (IEC 60831).
A leitura do ramo segue a sintonia: a partir de p = 5,67 % (4,2ª) é banco
dessintonizado; entre 4 % e 5,67 % é filtro sintonizado perto da 5ª; abaixo de
4 %, a sintonia fica acima da 5ª. `Un_cap_kV` = tensão nominal do capacitor ou
do banco montado, entre fases: a tool verifica o contínuo de 1,10·Un. Acima de
24 kV a tool não sugere classe e pede essa tensão. Com `scc_MVA`, avalia a
ressonância paralela com a rede. Gratuito.
- `dimensionar_cabo`: Dimensiona a seção de um cabo BT pela ABNT NBR 5410: ampacidade
(Tab. 36-39 + fatores), queda de tensão, coordenação de sobrecarga
(§5.3.4.1), neutro e PE. `sistema` ∈ {1FN,2F,3F,3FN}; `metodo` = método de
instalação (A1,A2,B1,B2,C,D,E,F,G); `material` ∈ {Cu,Al}; `isolacao` ∈
{PVC,EPR}. `icc_quadro_kA` = Icc presumida no quadro de origem.
`n_circuitos_agrupados` = nº de circuitos no mesmo eletroduto/leito (aplica
o fator de agrupamento da Tab. 42 — reduz a ampacidade); `arranjo` ∈
{feixe,camada}. `disjuntor_In_A`/`curva_disjuntor` (B,C,D) = o dispositivo
REAL instalado (sem eles, assume o menor MCB ≥ Ib, curva C). Gratuito.
- `dimensionar_tc`: Dimensiona o TC de proteção (IEC 61869-2 / NBR 6856): menor primário
comercial que NÃO satura na falta, considerando o burden REAL (relé+fiação)
e o ALF efetivo. `xr` (X/R) = liga o critério de saturação na falta
ASSIMÉTRICA (offset CC, IEEE C37.110): um TC que passa no simétrico pode
saturar no transitório, atrasar o relé e ELEVAR a energia incidente de arco.
`I_load_A`+`Fter` = corrente de carga p/ o critério térmico contínuo.
`Ith_A`/`Idyn_A` = corrente térmica (I²t, com `t_curto_s`/`tth_s`) e dinâmica
de catálogo → robustez à falta passante (se o TC AGUENTA o curto sem dano
térmico/mecânico). `Rct_ohm` = R do secundário de catálogo, do enrolamento
EM USO (None → estimada, e a resposta diz que estimou e por qual fórmula).
AVALIAR O TC INSTALADO: `primario_A` avalia só aquela relação (em vez de
procurar a menor que atende) e devolve tensão de saturação, ALF efetivo,
ALF exigido no simétrico e com a componente CC, margem, Ks, tempo até a
saturação e o resultado. TC multi-relação: `primario_A` = a derivação em
uso e `primario_pleno_A` = a relação de placa — a classe vale para o
enrolamento inteiro. CLASSE: `ALF` + `burden_VA` (IEC, ex.: 10P20 de 25 VA)
OU `classe_abnt` na notação antiga da ABNT (ex.: '10B200', '2,5B100'; o
tipo A, de alta reatância, é recusado). SIMULAÇÃO NO TEMPO (só com
`primario_A`, exige `xr`): `pickup_sec_A` = pickup do elemento no
secundário [A] liga a simulação da calculadora de saturação do IEEE PSRC e
devolve o instante em que o fluxo alcança o de saturação, a menor razão
entre a fundamental que o relé vê e a ideal e o atraso até o pickup.
`remanencia_pct` = remanência inicial em % do fluxo de saturação (padrão 0;
a classe PR garante até 10 %; 40 % quando desconhecida, pelo manual do
RET630 da ABB). Gratuito (uso limitado).
- `elevacao_temperatura_painel`: Elevação de temperatura do ar interno de um painel BT (IEC 60890) e
verificação de aceitação (61439-1). `perda_W` = perdas dissipadas no
invólucro; dimensões em metros. Exposição das faces (muda a área de
resfriamento): `face_topo` ∈ {exposto,coberto}; `face_traseira`/`face_laterais`
∈ {exposta,coberta} (coberta = encostada na parede / em fila → aquece mais).
`tipo_instalacao` 1–5 (Fig. 4); `limite_equip_C` = limite térmico do
equipamento interno (2º veredito); `regime` ∈ {BT, MT (estimativa)}. Gratuito (uso limitado).
- `gerar_memorial`: Memorial assinável + etiqueta ANSI/NBR. NUNCA é emitido autonomamente por IA —
o documento é preparado na sua conta da plataforma para revisão e assinatura do
responsável técnico.
- `grupo_gerador`: Afundamento transitório de tensão ao aplicar um degrau de carga a um
grupo gerador (ISO 8528-5, etapa 1: tensão), via reatância transitória X'd.
`modo` ∈ {bloco (degrau_kVA+degrau_fp), motor (motor_kW, partida DOL)}.
`XR` = X/R da X'd (ângulo da queda). `cabo_mm2`+`cabo_m` = alimentador
gerador→carga (a queda no cabo soma no ΔV). `dv_limite_pct` sobrepõe o limite
da classe — OBRIGATÓRIO para `classe_iso="G4"` (limite por acordo).
`motor_fp_rotor_bloqueado` = FP de partida (modo motor). Gratuito (uso limitado).
- `k_factor_transformador`: K-factor (UL 1561) a partir do espectro de corrente {ordem: % de I1}, ex.:
{"3": 70, "5": 45, "7": 30}. Devolve o K-factor, o K-rating comercial (trafo
K-rated para cargas não-lineares), o F_HL (derating de perdas parasitas, IEEE
C57.110) e o THD de corrente. Gratuito.
- `listar_dispositivos`: Lista o catálogo de dispositivos (devices_db) para descobrir o `device_id` usado
no modo catálogo de tempo_de_atuacao. Por padrão só MCCB/ACB (trip eletrônico com In_A
real); `tipo` filtra ('MCCB','ACB','Relay','MCB','Fuse','Transformer') e mostra
aquele tipo mesmo fora do modo catálogo (relé serve à rota manual); `todos=True`
inclui todos os tipos. Gratuito (uso limitado).
- `listar_ferramentas`: Lista a prateleira de cálculos de engenharia elétrica e o tier de cada um.
- `montar_rede`: Monta uma REDE MULTIBARRA (concessionária e/ou gerador → transformadores →
cabos → quadros) e calcula o curto-circuito IEC 60909 em TODAS as barras de uma vez,
pelo mesmo motor validado da plataforma (redução nodal do Anexo B: aceita
alimentação radial, em paralelo e malha). Use quando o usuário tem os dados
de VÁRIOS equipamentos — típico de quem acabou de ler um datasheet, uma carta
da concessionária ou um memorial antigo — em vez de chamar
`calcular_curto_circuito` (que é de UM ponto) várias vezes.

Devolve também `projeto_json`: o arquivo de projeto da plataforma com a rede
inteira. Entregue esse conteúdo ao usuário para salvar como `.json` e abrir no
Workspace da plataforma (app.estudoseletricos.com/workspace/, botão "Abrir") —
a rede aparece nas tabelas para ele CONFERIR e seguir para coordenograma, arco
elétrico e memorial. Nenhum valor extraído de
documento deve virar laudo sem essa conferência humana.

── barras: lista de objetos ────────────────────────────────────────────────
  {"id": "SE_BT", "label": "Subestação 480 V", "Vn_kV": 0.48}
  `id` é o identificador único (sem espaços é mais seguro); `Vn_kV` é a tensão
  NOMINAL da barra em kV (0,48 = 480 V). A barra de conexão com a
  concessionária é a que NÃO recebe nenhum elemento (nenhum `to_id` aponta
  para ela) — é ela a raiz da rede. Cada raiz tem de ser uma FONTE: a
  concessionária ou a barra de um gerador.

── elementos: lista de objetos (o que liga uma barra à outra) ──────────────
  element_type "transformer": {"from_id","to_id","element_type":"transformer",
    "Sn_kVA":1000,"Vcc_pct":5.0,"Pcu_W":10000,"XR_trafo":null,"Rn_ohm":null}
    Sn e Vcc são de PLAQUETA e obrigatórios (>0). `Pcu_W` = perdas no cobre;
    `XR_trafo` (opcional) sobrepõe o X/R estimado por Pcu. Modelado como Dyn
    (delta na alta, estrela na baixa). `Rn_ohm` = resistor de aterramento do
    NEUTRO de baixa (NGR), em Ω: ausente = neutro SÓLIDO, e a resposta avisa
    que foi assumido. Com NGR a fase-terra cai em ordem de grandeza — SEMPRE
    informe quando a instalação tiver. `tipo_aterramento` (opcional) aceita
    'solido' ou 'resistivo' (este exige Rn_ohm), como no
    `calcular_curto_circuito`; 'isolado' é RECUSADO aqui (neutro isolado não
    é modelado na rede multibarra). O aterramento é do TRANSFORMADOR, nunca
    da `fonte`.
  element_type "cable" (ou "busbar"): {"from_id","to_id","element_type":"cable",
    "secao_mm2":95,"material":"Cu","comprimento_m":40,"num_conductors":1}
    Liga barras de MESMA tensão (para mudar de tensão use "transformer").
    Opcionais do cabo: `R_km`/`X_km` (Ω/km do fabricante) e as razões de
    SEQUÊNCIA ZERO `k0_r` = R(0)/R(1) e `k0_x` = X(0)/X(1) — ausentes, 4,0 e
    3,0 (retorno pelo condutor de proteção; padrão não normativo). Só mudam a
    fase-terra e a bifásica-terra, nunca o arco.
  element_type "reactor": {"from_id","to_id","element_type":"reactor",
    "u_kR_pct":6,"I_rR_A":400}   (reator limitador, §6.5 — u_kR e I_rR de plaqueta)

── fonte: a contribuição da concessionária (omita na rede só com gerador) ──
  {"Vn_kV":13.8, "Scc_MVA":500, "XR":10, "Icc_1ph_kA":0, "XR_1ph":0}
  Informe `Scc_MVA` OU `Icc_kA` (não os dois). `Vn_kV` é a tensão do ponto de
  conexão. §7.1.2 d): use a contribuição MÁXIMA declarada pela concessionária,
  não a de hoje — dimensionar pelo valor de hoje subdimensiona o equipamento
  quando a rede reforça. `Icc_1ph_kA`/`XR_1ph` são opcionais (0 = estimar Z0).
  `Icc_min_kA` (opcional): a corrente trifásica MÍNIMA que a concessionária
  declara (modo de operação de menor curto, ≤ a máxima). Sem ela, a corrente
  mínima é a da IEC 60909 §7.1.2 sobre a mesma fonte da máxima. A resposta a
  ecoa em `fonte_minima_declarada_kA`.

── motores (opcional): contribuição de motores por barra ──────────────────
  {"bus_id":"QD-01","P_kW":75,"n_motores":4,"cos_phi":0.85,"rendimento":0.92,
   "Xd_sub_pu":0.17}

── geradores (opcional): gerador SÍNCRONO como fonte (IEC 60909-0 §6.6.1) ──
  {"bus_id":"GMG","label":"GMG-01","Sn_kVA":360,"xd2_pu":0.15,"cos_phi":0.8,
   "x0_pu":0.08,"aterramento":"solido"}
  `Sn_kVA` e `xd2_pu` (x″d SATURADA, em pu: 15 % = 0,15) são da folha de dados
  e obrigatórios; `cos_phi` atribuído (ausente = 0,8); `U_rG_kV` (ausente = a
  tensão da barra; a mais de 10 % dela é recusa — com elevador, o
  transformador é elemento da rede). Entra Z_GK = K_G·(R_Gf + jX″d), com o K_G
  da Fórmula (18) na corrente máxima e R_Gf = 0,15·X″d em BT (0,07 ou 0,05 em
  MT). `x0_pu` é o x(0) do gerador ATERRADO — ausente no neutro sólido, ele não
  entra na fase-terra (a resposta avisa); no resistivo o caminho é o resistor.
  `aterramento`: 'solido' · 'resistivo' (com `Rn_ohm`, o
  resistor do neutro, em Ω) · 'isolado'. Rede SÓ com gerador (o grupo de
  emergência): omita `fonte` — a barra do gerador é a raiz. Com concessionária
  e gerador em paralelo, o curto soma os dois e a resposta ecoa cada gerador
  em `geradores` (K_G e Z_GK, para conferir à mão). Sem decaimento: Ik = Ik″.

── cenarios (opcional): os cenários de OPERAÇÃO da instalação ─────────────
  [{"nome":"Normal","fontes":["concessionaria"],"abertas":[["GMG","QTA"]]},
   {"nome":"Emergência","fontes":["GMG"],"abertas":[["DG_CARGA","QTA"]]}]
  Cada um diz as `fontes` em serviço ('concessionaria' e as barras com
  gerador; ausente = todas) e os elementos `abertas` ([DE, PARA] ou
  "DE→PARA") — a transferência normal × emergência, o disjuntor de
  interligação aberto. A barra que nenhuma fonte em serviço alcança fica
  desenergizada no cenário. A resposta traz o curto de cada um em
  `operacoes`; no Workspace, a energia incidente de cada barra é a do cenário de
  MAIS energia, com o nome dele. Sem cenários, a rede é a desenhada.

── estudo (opcional): opções do estudo de arco que o projeto leva ─────────
  {"banda_padrao":"norma", "t_sem_atuacao_ms":2000, "base_ibf":"pior_caso"}
  Todas nascem DESLIGADAS (ausentes ou null) e não mudam o curto calculado
  aqui: vão no `projeto_json` para o Workspace estudar o arco com elas.
  `banda_padrao` "norma" = ±20 % na instantânea do disjuntor termomagnético
  sem banda declarada (IEC 60947-2). `t_sem_atuacao_ms` = tempo máximo de
  arco (> 0 e ≤ 2000 ms) para a barra cuja proteção não vê a falta.
  `base_ibf` "pior_caso" = cada barra também com a corrente MÍNIMA, ficando a
  de mais energia (NBR 17227 §4.2.1.3); "nominal" = a energia com a corrente
  em TENSÃO NOMINAL (c = 1,0 no ponto de falta, sem K_T), FORA da máxima da
  IEC 60909 §7.1.2 e dita no memorial — com `t_cabo_C` (°C, −40 a 250) para
  os cabos dela (ausente = a de cada cabo; só vale com "nominal"). Valor fora
  disso é erro de forma. A resposta ecoa `estudo`.

Erro de FORMA (campo faltando, valor não-numérico) e erro de FÍSICA (tensões
que não casam num cabo, trafo sem Sn/Vcc, duas alimentações para a mesma
barra) voltam em {"erro": ...} explicando o que corrigir — nada é calculado
"pela metade". Gratuito (uso limitado).
- `partida_motor`: Afundamento de tensão na partida de motor por divisor fasorial
fonte→cabo→motor (C ∝ V²). `fonte_tipo` ∈ {scc (nível de curto `scc_MVA`),
trafo (`fonte_trafo_kVA`+`fonte_trafo_Vcc_pct`, com rede a montante opcional
`fonte_scc_montante_MVA`), gerador (`fonte_gmg_kVA`+`fonte_gmg_xd_pct`, X'd
transitório)} — trafo dedicado e GMG são os casos SEVEROS de afundamento.
`metodo` ∈ {direta, estrela_triangulo, compensadora_65, compensadora_80,
soft_starter, vfd} (aceita 'compensadora'→tap 80% e 'soft'→soft_starter).
`fp_partida` = FP de rotor bloqueado; `Cp_Cn` = conjugado de partida/nominal;
`C_load_pu` = conjugado da carga (×Cn) — SEM ele a aceleração NÃO é avaliada.
Gratuito (uso limitado).
- `puxamento_cabo`: Tração de puxamento de cabo (IEEE 1185/525): tração no cabrestante, SWBP
(pressão lateral nas curvas), ocupação do duto (NBR 5410) e tração máxima
admissível. `n_cabos` ∈ {1,3} (trifólio). `curvas_graus` = lista dos ângulos
das curvas/cotovelos (graus) — SEM curvas a SWBP (que costuma GOVERNAR) sai
zero; `curva_raio_m` = raio das curvas (m). `attachment` ∈ {olhal (no
condutor), malha (na capa, teto 500 kgf)}. `convencao` ∈ {BR,NA,EU};
`swbp_classe`/`cabo_classe` ∈ {BT, MT, controle, armado, ...}. Gratuito (uso limitado).
- `solicitar_orcamento`: Encaminha um pedido de ORÇAMENTO de estudo/laudo assinável com ART (arc
flash, curto-circuito, seletividade, adequação NR-10) direto do chat.
Informe o e-mail de contato e o escopo (ex.: nº de painéis, classe de
tensão, prazo, cidade). A equipe responde pelo e-mail informado. Não
consome o limite das calculadoras — funciona inclusive quando o uso
gratuito do dia esgotou.
- `tempo_de_atuacao`: Tempo de atuação de um dispositivo de proteção à corrente de falta, pela curva
composta 4-segmentos do motor da plataforma (IEC 60255-151 / IEEE C37.112): 51
inversa · 50 curto-tempo · 50 instantânea. É o ELO entre o curto e o arco: encadeie
calcular_curto_circuito → tempo_de_atuacao → calcular_energia_incidente (o `tempo_s`
daqui é o `t_arc_s`, o parâmetro mais difícil de estimar à mão).

O tempo é o da borda LENTA da banda de tolerância, a mesma régua do estudo da
plataforma: no modelo do catálogo que declara a banda do fabricante ela é aplicada
(`banda: "fabricante"`); sem banda declarada, informe `tolerancia_pct` (± %, só na
instantânea — a do manual do seu disjuntor; a IEC 60947-2 admite ±20 % no
disparador de curto-circuito) e a instantânea sobe para o extremo de cima
(`banda: "informada"`); sem nada, a curva ajustada (`banda: "nenhuma"`). A corrente
de arco REDUZIDA que fica entre o ajuste e o extremo da banda cai na curva térmica —
e é ela que costuma governar a energia.

MANUAL (universal): `pickup_A` = pickup do 51 (relé: RTC×tap; disjuntor: Ir); `curva`
∈ IEC/IEEE, pelo nome ou pelo apelido dos manuais — NI/SI (= IEC-NI), VI, EI,
LTI, UI, DT/DTL e ANSI/IEEE MI/VI/EI; o nome lido volta em `curva` e o que você
escreveu em `curva_informada`. Códigos de fabricante (como U1–U5 e C1–C5) NÃO
são aceitos: cada fabricante numera e escala do seu jeito (a U1 da SEL usa outra
escala de dial). `tms` = TMS (IEC) ou time-dial (IEEE), 0,10 se omitido; `instantaneo_A`+`t_disjuntor_ms`
(50 instantânea) e `curto_tempo_A`+`t_curto_tempo_ms` (50 temporizada) são opcionais —
sem eles, só a inversa opera. CATÁLOGO: `device_id` de MCCB/ACB (use listar_dispositivos);
`tms` omitido = o padrão do aparelho, e nos disparadores de curva I²t da IEC 60947-2
(3WL, Emax 2, Tmax XT7) o `tms` é o t1/tR em SEGUNDOS, o número do mostrador.

CURVA TÉRMICA TABELADA (termomagnético, cuja térmica não é IEC/IEEE): `curva_pontos`
= [[múltiplo, t_s], …] lidos da tabela do manual (a borda de cima; múltiplo
crescente, tempo que não cresce) e `curva_base` = 'Ir' ou 'In' (de qual corrente são
os múltiplos — obrigatória). A região inversa sai desses pontos (interpolação
log-log) no lugar da `curva`; a resposta traz `curva_tabelada`. Nunca leia pontos de
um GRÁFICO: só de tabela.
Gratuito (uso limitado).
- `tempo_partida_motor`: Simula a partida DIRETA no tempo (RK4, J·dω/dt = T_motor − T_carga): tempo
de aceleração, se o motor PARTE ou trava, e o térmico de rotor bloqueado (I²t
da partida vs tempo de rotor bloqueado de placa, critério Petrobras N-313).
`polos` = nº de polos; `inercia_kgm2` = J total (motor+carga); `tipo_carga` ∈
{constante, linear, parabolica (bomba/ventilador)}; `conjugado_partida_carga_pu`
/`conjugado_pleno_pu` = conjugado da carga (×Cn do motor) em n=0 e a plena
rotação; `t_rotor_bloqueado_s` liga o veredito térmico. Gratuito.
- `verificar_seccionamento`: Verifica a proteção contra choque por seccionamento automático
(ABNT NBR 5410:2004 §5.1.2.2). TN: Zs ≤ U0/Ia (informe Ia OU disjuntor
In+curva_mcb). TT: RA ≤ 50/IΔn (informe i_dn_mA + RA).
`situacao` = 1 (seco/usual, U_L=50 V) ou 2 (molhado/externo, U_L=25 V e
tempo da Tab. 25 mais rígido). `R_montante_ohm`+`X_montante_ohm` = impedância
do laço A MONTANTE (fonte/trafo + alimentadores) — sem ela o Zs conta só o
circuito e o veredito fica OTIMISTA. `circuito_tipo` ∈ {terminal_le32,
distribuicao_gt32}; `secao_pe_mm2` = PE real (None → mínimo da Tab. 58).
Gratuito (uso limitado).
