# Spark Pack

> Cable sizing, Part P, certificate checks and G98/G99 for UK electricians' AI assistants

- name: io.github.Nero-Engine/spark-pack
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fspark-pack
- tools: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fspark-pack/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "spark-pack": {
      "type": "http",
      "url": "https://spark-pack.nerolabs.workers.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 92
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-80% +updated-1d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 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: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 7 of 7 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,547 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

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

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

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

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

- tools: 7, about 5,547 tokens to load them all
- tool set hash: 9095198f3f41d9823a876d03e3ce5a3d
- tools last changed: 2026-11-13T18:12:05.502Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Nero-Engine/spark-pack.svg)](https://protogrid.dev/servers/io.github.Nero-Engine/spark-pack)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `trade_profile` changed (description)
  - before: Checks the electrician's own business details (Nero Trade Profile v1: trading name, Companies House number, competent person scheme and number, postcode, contact) and returns them cleaned, with a stable `nero_trade_ref` computed from the scheme registration or company number. Pass the same object as `trade` to any other tool to prefill certificates and grid forms. Spark Pack stores nothing. The same profile and reference can later be used to sign the business into Nero Work, the agent job exchange for trades.
  - after: Checks the electrician's own business details (Nero Trade Profile v1: trading name, Companies House number, competent person scheme and number, postcode, contact) and returns them cleaned, with a stable `nero_trade_ref` computed from the scheme registration or company number. The same object, given as `trade` to the other tools, prefills certificates and grid forms. Spark Pack stores nothing. The same profile and reference can later be used to sign the business into Nero Work, the agent job exchange for trades.
- 2026-11-13 `get_certificate_schema` changed (description)
  - before: Returns the fields an Electrical Installation Certificate (eic), Minor Electrical Installation Works Certificate (minor_works) or Electrical Installation Condition Report (eicr) needs, as a JSON Schema the assistant fills from the job notes and test readings (spark-pack-certs-1.0 (for BS 7671:2018+A4:2026 certificates)). Includes which certificate to use when, and the contractor block prefilled from `trade` if given. Send the filled object to check_certificate. Field names are Spark Pack's own; the electrician transfers the values to the official form in their scheme portal or software.
  - after: Returns the fields an Electrical Installation Certificate (eic), Minor Electrical Installation Works Certificate (minor_works) or Electrical Installation Condition Report (eicr) needs, as a JSON Schema the assistant fills from the job notes and test readings (spark-pack-certs-1.0 (for BS 7671:2018+A4:2026 certificates)). Includes which certificate to use when, and the contractor block prefilled from `trade` if given. check_certificate checks the filled object. Field names are Spark Pack's own; the electrician transfers the values to the official form in their scheme portal or software.
- 2026-11-13 `size_cable` changed (description)
  - before: Sizes a UK final circuit or sub-main and shows the working: design current (with cooker diversity), protective device rating, the smallest cable size that passes current-carrying capacity, voltage drop (3% lighting, 5% other) and earth fault loop impedance (Zs against the maximum for B, C or D breakers), plus a cpc adiabatic check. Returns `recommended` (size and every check with status pass, fail, indicative_pass, needs_input), `sizes_considered` (one line per size), `must_check_against_regs` (relay these to the electrician) and sources. Current-carrying capacity comes from a cautious heat-flow model, not BS 7671 tables, so it is marked indicative; give `cable_size_mm2` plus `tabulated_capacity_a` from the regs for a firm check. Voltage drop and Zs are calculated from physics and are firm for the inputs given. Typical call: a 9.5 kW shower on an 18 m run clipped direct: {"circuit_type":"shower","load_kw":9.5,"run_length_m":18,"installation_method":"clipped_direct"}.
  - after: Sizes a UK final circuit or sub-main and shows the working: design current (with cooker diversity), protective device rating, the smallest cable size that passes current-carrying capacity, voltage drop (3% lighting, 5% other) and earth fault loop impedance (Zs against the maximum for B, C or D breakers), plus a cpc adiabatic check. Returns `recommended` (size and every check with status pass, fail, indicative_pass, needs_input), `sizes_considered` (one line per size), `must_check_against_regs` (points the electrician confirms in BS 7671) and sources. Current-carrying capacity comes from a cautious heat-flow model, not BS 7671 tables, so it is marked indicative; give `cable_size_mm2` plus `tabulated_capacity_a` from the regs for a firm check. Voltage drop and Zs are calculated from physics and are firm for the inputs given. Typical call: a 9.5 kW shower on an 18 m run clipped direct: {"circuit_type":"shower","load_kw":9.5,"run_length_m":18,"installation_method":"clipped_direct"}.

Full history: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fspark-pack/changes

## Remotes

- https://spark-pack.nerolabs.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.8)

## Packages

_none_

## Tools (7)

- `check_certificate`: Checks a filled EIC, Minor Works certificate or EICR (shape from get_certificate_schema) and returns `ready_to_transfer`, every missing required field by path, errors (readings that fail: insulation resistance under 1 megohm at 500 V, measured Zs above the maximum for the breaker, RCD trip times too slow, wrong polarity, an EICR marked satisfactory with a C1 or C2) and warnings (Zs above 80% of maximum, mismatched ring readings, low insulation resistance). Contractor fields left blank are filled from `trade`. Returns the (prefilled) data back.
- `check_grid_connection`: For solar PV, batteries, V2G chargers, EV chargers and heat pumps in Great Britain: says which network operator process applies and when. Generation: G98 (fully type tested, 16 A / 3.68 kW per phase or less: install, then notify within 28 days) or G99 (apply and wait for acceptance before installing), counting existing generation and battery inverters. Demand: the ENA EV charge point and heat pump form (connect and notify within 28 days if every criterion is met, otherwise apply first), with each criterion marked true, false or null (not yet known). Returns `generation`, `demand`, `facts_to_put_on_the_form` (prefilled from inputs and `trade`), `missing_facts` and sources. Example: 5 kW solar plus a 5 kW battery inverter on single phase: {"supply_phases":1,"new_equipment":[{"type":"solar_pv","rating_kw":5,"type_tested":true},{"type":"battery","rating_kw":5,"type_tested":true}]}.
- `check_part_p`: Answers whether domestic electrical work in England or Wales must be notified to building control under Part P of the Building Regulations, with the reason and what to do next (self-certify through a competent person scheme within 30 days, or tell building control before starting). England and Wales differ: in Wales kitchens and outdoor areas are still special locations. Returns `notifiable` (true or false), `answer`, `reason`, `what_to_do`, `must_check` and sources. Scotland and Northern Ireland return not_covered. Example: adding a socket in a kitchen in England: {"nation":"england","work":"add_to_or_alter_existing_circuit","locations":["kitchen"]}.
- `get_certificate_schema`: Returns the fields an Electrical Installation Certificate (eic), Minor Electrical Installation Works Certificate (minor_works) or Electrical Installation Condition Report (eicr) needs, as a JSON Schema the assistant fills from the job notes and test readings (spark-pack-certs-1.0 (for BS 7671:2018+A4:2026 certificates)). Includes which certificate to use when, and the contractor block prefilled from `trade` if given. check_certificate checks the filled object. Field names are Spark Pack's own; the electrician transfers the values to the official form in their scheme portal or software.
- `list_capabilities`: Lists Spark Pack's tools, the regulations edition it targets, what it covers (nations, circuit types, cable types, installation methods) and what it deliberately does not do. Free, needs no input.
- `size_cable`: Sizes a UK final circuit or sub-main and shows the working: design current (with cooker diversity), protective device rating, the smallest cable size that passes current-carrying capacity, voltage drop (3% lighting, 5% other) and earth fault loop impedance (Zs against the maximum for B, C or D breakers), plus a cpc adiabatic check. Returns `recommended` (size and every check with status pass, fail, indicative_pass, needs_input), `sizes_considered` (one line per size), `must_check_against_regs` (points the electrician confirms in BS 7671) and sources. Current-carrying capacity comes from a cautious heat-flow model, not BS 7671 tables, so it is marked indicative; give `cable_size_mm2` plus `tabulated_capacity_a` from the regs for a firm check. Voltage drop and Zs are calculated from physics and are firm for the inputs given. Typical call: a 9.5 kW shower on an 18 m run clipped direct: {"circuit_type":"shower","load_kw":9.5,"run_length_m":18,"installation_method":"clipped_direct"}.
- `trade_profile`: Checks the electrician's own business details (Nero Trade Profile v1: trading name, Companies House number, competent person scheme and number, postcode, contact) and returns them cleaned, with a stable `nero_trade_ref` computed from the scheme registration or company number. The same object, given as `trade` to the other tools, prefills certificates and grid forms. Spark Pack stores nothing. The same profile and reference can later be used to sign the business into Nero Work, the agent job exchange for trades.
