# SuliHuli EV catalog

> Electric-vehicle specs, prices, rankings and comparisons; every figure with its source and date.

- name: com.sulihuli/catalog
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 100/100
- quality: 85/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.sulihuli%2Fcatalog
- tools: https://api.protogrid.dev/v1/servers/com.sulihuli%2Fcatalog/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "catalog": {
      "type": "http",
      "url": "https://sulihuli.com/api/mcp"
    }
  }
}
```


## Trust

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

## Quality 85/100 (new)

### 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: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,601 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 4 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: 5, about 1,601 tokens to load them all
- tool set hash: e9b868489bcc69a8a8cb76d85aa9697f
- tools last changed: 2026-11-11T12:27:41.497Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.sulihuli/catalog.svg)](https://protogrid.dev/servers/com.sulihuli/catalog)
- 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-11 `get_model` changed (outputSchema)
- 2026-11-11 `search_models` changed (description, inputSchema)
  - before: Find electric vehicles by brand or model name, or list the whole catalog ranked for a use case, optionally only those with at least a given range. Use it first whenever you have a name but no slug, and for questions like 'which EVs go furthest' or 'best family EV'. Returns JSON: per model the slug (pass it to get_model or compare_models), brand, name, score out of 100 for the chosen preset (score_tier says whether every input is verified), official range in km with its test cycle (range_km_official + range_cycle: WLTP, EPA, CLTC or NEDC) and the comparable WLTP-equivalent figure, DC charging 10-80 % in minutes, battery kWh, each of these with its source and verification status, markets where it is sold, the number of known versions, the page URL and the cover photo with its credit. Prices are per market and per version: read them with get_model. Paged: total, page, total_pages.
  - after: Find electric vehicles by brand or model name, or list the whole catalog ranked for a use case, optionally only those with at least a given range. Use it first whenever you have a name but no slug, and for questions like 'which EVs go furthest' or 'best family EV'. Returns JSON: per model the slug (pass it to get_model or compare_models), brand, name, score out of 100 - the SuliHuli Index 4.4 by default (0.40 passport + 0.30 people + 0.30 market, the same number as on the model page), or the use-case score of another preset (score_tier says whether every input is verified), official range in km with its test cycle (range_km_official + range_cycle: WLTP, EPA, CLTC or NEDC) and the comparable WLTP-equivalent figure, DC charging 10-80 % in minutes, battery kWh, each of these with its source and verification status, markets where it is sold, the number of known versions, the page URL and the cover photo with its credit. Prices are per market and per version: read them with get_model. Paged: total, page, total_pages.

Full history: https://api.protogrid.dev/v1/servers/com.sulihuli%2Fcatalog/changes

## Remotes

- https://sulihuli.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (5)

- `compare_models`: Side-by-side comparison of two to four electric vehicles: range (each with its test cycle), charging, battery, price and the other specs, the leading value marked per row, a short verdict, the version each column stands for, sources and cover photo credits. Each model is compared on its named version, and every figure says which version it belongs to. Use it for 'X vs Y' and 'which should I buy' questions; get slugs from search_models first. Returns Markdown with the canonical comparison URL, plus the figures as structured fields.
- `get_category_ranking`: One 'best EV for ...' ranking: the top 25 models in order with score out of 100, published range with its test cycle, DC charging 10-80 % time and battery (unverified figures marked with their source), the public ranking method, and links to each model. Use it for 'what are the best EVs for ...' questions; take the slug from list_categories and quote the criterion with the list. Returns Markdown with the canonical page URL, plus the ranked rows as structured fields.
- `get_model`: Everything SuliHuli holds on one electric vehicle: range per test cycle (WLTP, EPA, CLTC, NEDC), charging, efficiency, battery and the other specs, prices per market and version with their dates, and every figure's source link, date and status (verified or unverified; where sources disagree, each figure is shown with its source, never averaged). The headline figures describe one named version; the answer lists every version we know with what is sourced for each (full, partial or name only). For another version pass `version` (name words such as 'long range awd', or a key from that list) and get that version's own figures. Photos come with their credit. Use it to answer any question about a specific model, quoting the figure with its cycle, source and status. Returns Markdown with the canonical page URL, plus the same figures as structured fields.
- `list_categories`: The published 'best EV for ...' rankings (everyday, long range, long range over 500 km, family, performance): slug, title, the preset each ranks by and what it optimizes for, and the page URL. Use it to pick a ranking, then open it with get_category_ranking. Returns JSON.
- `search_models`: Find electric vehicles by brand or model name, or list the whole catalog ranked for a use case, optionally only those with at least a given range. Use it first whenever you have a name but no slug, and for questions like 'which EVs go furthest' or 'best family EV'. Returns JSON: per model the slug (pass it to get_model or compare_models), brand, name, score out of 100 - the SuliHuli Index 4.4 by default (0.40 passport + 0.30 people + 0.30 market, the same number as on the model page), or the use-case score of another preset (score_tier says whether every input is verified), official range in km with its test cycle (range_km_official + range_cycle: WLTP, EPA, CLTC or NEDC) and the comparable WLTP-equivalent figure, DC charging 10-80 % in minutes, battery kWh, each of these with its source and verification status, markets where it is sold, the number of known versions, the page URL and the cover photo with its credit. Prices are per market and per version: read them with get_model. Paged: total, page, total_pages.
