SuliHuli MCP
A read-only MCP server providing access to SuliHuli's electric vehicle data, including model specifications, pricing, rankings, charging details, and comparisons. It exposes tools for searching models, retrieving specific model data, comparing vehicles, and listing category rankings.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://sulihuli.com/api/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to sulihuli.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for electric vehicle models
- Retrieve detailed specs and prices for a specific model
- Compare two electric vehicles side-by-side
- List available EV rankings and categories
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- sulihuli 1.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
search_models — Search and rank EVs
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.
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number, 1-based (default 1); see total_pages in the answer."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Models per page (default 20, at most 50 without an API key)."
},
"query": {
"type": "string",
"description": "Words of the brand and/or model name, any order, case-insensitive; every word must match, e.g. 'tesla 3', 'ioniq', 'bmw ix'. Omit to rank the whole catalog."
},
"preset": {
"enum": [
"everyday",
"long_range",
"family",
"performance",
"city",
"winter"
],
"type": "string",
"description": "What the ranking optimizes for (default everyday): everyday (a balanced daily driver — range, charging and practicality); long_range (maximum distance per charge for road trips); family (space, seats and practicality for a family); performance (acceleration and fast-charging capability); city (a short, easy-to-park car that still charges fast); winter (range that survives the cold — ranked on our own winter estimate)."
},
"min_range_km": {
"type": "number",
"minimum": 0,
"description": "Only EVs whose official range is at least this many kilometres on the comparable WLTP-equivalent basis (an EPA or CLTC figure is converted by its cycle factor). For miles, multiply by 1.609."
}
}
}{
"type": "object",
"required": [
"count",
"models"
],
"properties": {
"hint": {
"type": "string",
"description": "Why a page is empty and what to try."
},
"page": {
"type": "integer"
},
"count": {
"type": "integer"
},
"query": {
"type": [
"string",
"null"
]
},
"terms": {
"type": "string",
"description": "Terms the data is given under."
},
"total": {
"type": "integer"
},
"models": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"brand": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"battery_kwh": {
"type": [
"number",
"null"
]
},
"range_cycle": {
"type": [
"string",
"null"
]
},
"variant_count": {
"type": "integer"
},
"range_km_official": {
"type": [
"number",
"null"
]
},
"charging_10_80_min": {
"type": [
"number",
"null"
]
},
"range_km_wltp_equivalent": {
"type": [
"number",
"null"
]
}
}
}
},
"preset": {
"type": "string"
},
"per_page": {
"type": "integer"
},
"total_pages": {
"type": "integer"
},
"min_range_km": {
"type": [
"number",
"null"
]
}
}
}{
"title": "Search and rank EVs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_model — Get one EV with sources
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.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Model slug as search_models returns it (also the last part of the page URL https://sulihuli.com/m/<slug>), e.g. 'hyundai-ioniq-6'. A version slug such as 'tesla-model-y-long-range-awd' also works."
},
"version": {
"type": "string",
"description": "Optional: a version key or name words, e.g. 'long range awd'. Without it the answer describes the named version and lists the others."
}
}
}{
"type": "object",
"required": [
"slug",
"name",
"url",
"figures",
"versions"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"brand": {
"type": [
"string",
"null"
]
},
"score": {
"type": [
"number",
"null"
]
},
"terms": {
"type": "string",
"description": "Terms the data is given under."
},
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
]
},
"as_of": {
"type": [
"string",
"null"
]
},
"value": {
"type": "number"
},
"source": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"country": {
"type": "string"
},
"version": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
}
}
}
},
"figures": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": [
"value",
"status"
],
"properties": {
"basis": {
"type": [
"string",
"null"
]
},
"cycle": {
"type": [
"string",
"null"
],
"description": "Test cycle of a range figure (wltp, epa, cltc, nedc)."
},
"value": {
"description": "The figure as shown; units are in the field name (km, kwh, kw, min, s, kg...)."
},
"source": {
"type": [
"string",
"null"
],
"description": "Page the figure was read from."
},
"status": {
"enum": [
"verified",
"unverified"
],
"type": "string"
},
"version": {
"type": [
"string",
"null"
],
"description": "Version name the source printed."
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Date the source was read, YYYY-MM-DD."
},
"version_relation": {
"enum": [
"own",
"compatible",
"unnamed",
"other"
],
"type": "string"
}
}
}
},
"version": {
"type": "object",
"properties": {
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
]
},
"as_of": {
"type": [
"string",
"null"
]
},
"value": {
"type": "number"
},
"source": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"country": {
"type": "string"
},
"version": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
}
}
}
},
"figures": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": [
"value",
"status"
],
"properties": {
"basis": {
"type": [
"string",
"null"
]
},
"cycle": {
"type": [
"string",
"null"
],
"description": "Test cycle of a range figure (wltp, epa, cltc, nedc)."
},
"value": {
"description": "The figure as shown; units are in the field name (km, kwh, kw, min, s, kg...)."
},
"source": {
"type": [
"string",
"null"
],
"description": "Page the figure was read from."
},
"status": {
"enum": [
"verified",
"unverified"
],
"type": "string"
},
"version": {
"type": [
"string",
"null"
],
"description": "Version name the source printed."
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Date the source was read, YYYY-MM-DD."
},
"version_relation": {
"enum": [
"own",
"compatible",
"unnamed",
"other"
],
"type": "string"
}
}
}
},
"markets": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"summary": {
"type": "object",
"required": [
"key",
"label",
"data"
],
"properties": {
"key": {
"type": "string",
"description": "Pass as `version` to get_model for this version's own figures."
},
"data": {
"enum": [
"full",
"partial",
"name_only"
],
"type": "string"
},
"drive": {
"type": [
"string",
"null"
]
},
"label": {
"type": "string"
},
"named": {
"type": "boolean"
},
"power_kw": {
"type": [
"number",
"null"
]
},
"battery_kwh": {
"type": [
"number",
"null"
]
},
"range_cycle": {
"type": [
"string",
"null"
]
},
"missing_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"range_km_official": {
"type": [
"number",
"null"
]
}
}
}
},
"description": "Present when a version was asked for: that version's own figures."
},
"versions": {
"type": "object",
"properties": {
"list": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"data"
],
"properties": {
"key": {
"type": "string",
"description": "Pass as `version` to get_model for this version's own figures."
},
"data": {
"enum": [
"full",
"partial",
"name_only"
],
"type": "string"
},
"drive": {
"type": [
"string",
"null"
]
},
"label": {
"type": "string"
},
"named": {
"type": "boolean"
},
"power_kw": {
"type": [
"number",
"null"
]
},
"battery_kwh": {
"type": [
"number",
"null"
]
},
"range_cycle": {
"type": [
"string",
"null"
]
},
"missing_fields": {
"type": "array",
"items": {
"type": "string"
}
},
"range_km_official": {
"type": [
"number",
"null"
]
}
}
}
},
"known_count": {
"type": "integer"
},
"completeness": {
"type": "string"
},
"expected_count": {
"type": [
"integer",
"null"
]
}
}
},
"score_tier": {
"type": "string"
},
"sources_url": {
"type": "string"
},
"named_version": {
"type": [
"string",
"null"
],
"description": "The version the headline figures describe."
}
}
}{
"title": "Get one EV with sources",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_models — Compare EVs side by side
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.
{
"type": "object",
"required": [
"slugs"
],
"properties": {
"slugs": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"minItems": 2,
"description": "Two to four model slugs, e.g. ['tesla-model-3', 'hyundai-ioniq-6'].",
"uniqueItems": true
},
"slug_a": {
"type": "string",
"description": "Shorter two-model form: first model slug (use with slug_b instead of slugs)."
},
"slug_b": {
"type": "string",
"description": "Second model slug (with slug_a)."
}
}
}{
"type": "object",
"required": [
"models"
],
"properties": {
"url": {
"type": "string"
},
"terms": {
"type": "string",
"description": "Terms the data is given under."
},
"models": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"name",
"figures"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"score": {
"type": [
"number",
"null"
]
},
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": [
"string",
"null"
]
},
"as_of": {
"type": [
"string",
"null"
]
},
"value": {
"type": "number"
},
"source": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"country": {
"type": "string"
},
"version": {
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
}
}
}
},
"figures": {
"type": "object",
"additionalProperties": {
"type": "object",
"required": [
"value",
"status"
],
"properties": {
"basis": {
"type": [
"string",
"null"
]
},
"cycle": {
"type": [
"string",
"null"
],
"description": "Test cycle of a range figure (wltp, epa, cltc, nedc)."
},
"value": {
"description": "The figure as shown; units are in the field name (km, kwh, kw, min, s, kg...)."
},
"source": {
"type": [
"string",
"null"
],
"description": "Page the figure was read from."
},
"status": {
"enum": [
"verified",
"unverified"
],
"type": "string"
},
"version": {
"type": [
"string",
"null"
],
"description": "Version name the source printed."
},
"observed_at": {
"type": [
"string",
"null"
],
"description": "Date the source was read, YYYY-MM-DD."
},
"version_relation": {
"enum": [
"own",
"compatible",
"unnamed",
"other"
],
"type": "string"
}
}
}
},
"range_cycle": {
"type": [
"string",
"null"
]
},
"named_version": {
"type": [
"string",
"null"
]
},
"version_count": {
"type": "integer"
},
"range_km_official": {
"type": [
"number",
"null"
]
},
"range_km_wltp_equivalent": {
"type": [
"number",
"null"
]
}
}
}
}
}
}{
"title": "Compare EVs side by side",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_categories — List 'best EV for' rankings
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.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"count",
"categories"
],
"properties": {
"count": {
"type": "integer"
},
"terms": {
"type": "string",
"description": "Terms the data is given under."
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"slug",
"title"
],
"properties": {
"url": {
"type": "string"
},
"slug": {
"type": "string"
},
"query": {
"type": "string"
},
"title": {
"type": "string"
},
"preset": {
"type": "string"
},
"optimizes_for": {
"type": "string"
}
}
}
}
}
}{
"title": "List 'best EV for' rankings",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_category_ranking — Get a 'best EV for' 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.
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"enum": [
"best-everyday-evs",
"best-long-range-evs",
"best-long-range-evs-over-500-km",
"best-family-evs",
"best-performance-evs"
],
"type": "string",
"description": "Ranking slug from list_categories, e.g. 'best-long-range-evs'."
}
}
}{
"type": "object",
"required": [
"slug",
"rows"
],
"properties": {
"url": {
"type": "string"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"rank",
"slug",
"score"
],
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"rank": {
"type": "integer"
},
"slug": {
"type": "string"
},
"score": {
"type": "number"
}
}
}
},
"slug": {
"type": "string"
},
"terms": {
"type": "string",
"description": "Terms the data is given under."
},
"title": {
"type": "string"
},
"total": {
"type": "integer",
"description": "Models that qualified for the ranking."
},
"criterion": {
"type": "string",
"description": "The public ranking criterion."
}
}
}{
"title": "Get a 'best EV for' ranking",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-09: 1 of 1 checks answered
- 2026-11-10: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1040 ms
- 95th percentile latency
- 1040 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1040 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http sulihuli-mcp https://sulihuli.com/api/mcpCodex
codex mcp add sulihuli-mcp --url https://sulihuli.com/api/mcpCursor
{
"mcpServers": {
"sulihuli-mcp": {
"url": "https://sulihuli.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"sulihuli-mcp": {
"type": "streamableHttp",
"url": "https://sulihuli.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"sulihuli-mcp": {
"type": "http",
"url": "https://sulihuli.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http sulihuli-mcp https://sulihuli.com/api/mcpClaude Desktop
https://sulihuli.com/api/mcpWindsurf
{
"mcpServers": {
"sulihuli-mcp": {
"serverUrl": "https://sulihuli.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like SuliHuli MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run SuliHuli MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.