Koskamo

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.

SuliHuli MCP logo, by SuliHuliVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-09Operated by SuliHuli
MCP endpoint (Streamable HTTP)
https://sulihuli.com/api/mcp
Vendor documentation

What its tools do

5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

5 of 5 have a description · 5 of 5 declare behavior hints · 4 of 4 with parameters document them all

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

Vendor evidenceRegistry 1.1.0
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
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

SuliHuli: a read-only electric-vehicle catalog. Every figure carries a source link and date; verified figures are marked, and collected figures remain visible as unverified until independently confirmed. How to use: start with search_models to turn a name into a slug (never guess slugs), then get_model for one car, compare_models for two to four, list_categories and get_category_ranking for 'best EV for ...' questions. When you answer: give each range with its test cycle (WLTP, EPA, CLTC and NEDC differ for the same car), say when a figure is unverified, link the source or the model page, keep a figure with the version it belongs to, and say 'not published' for an empty field rather than estimating. Photos come with their credit (author, licence, source) - keep it when you show a photo. Open access: 60 requests per minute per address, lists in pages of 50; a free key from https://sulihuli.com/developer (header Authorization: Bearer <key>) raises it to 600 per minute and pages of 500. Terms of use: https://sulihuli.com/terms

Tools

5 advertised

search_models — Search and rank EVs
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

search_models input schema
{
  "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."
    }
  }
}
search_models output schema
{
  "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"
      ]
    }
  }
}
search_models annotations
{
  "title": "Search and rank EVs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_model — Get one EV with sources
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_model input schema
{
  "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."
    }
  }
}
get_model output schema
{
  "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."
    }
  }
}
get_model annotations
{
  "title": "Get one EV with sources",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_models — Compare EVs side by side
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

compare_models input schema
{
  "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)."
    }
  }
}
compare_models output schema
{
  "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"
            ]
          }
        }
      }
    }
  }
}
compare_models annotations
{
  "title": "Compare EVs side by side",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_categories — List 'best EV for' rankings
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_categories input schema
{
  "type": "object",
  "properties": {}
}
list_categories output schema
{
  "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"
          }
        }
      }
    }
  }
}
list_categories annotations
{
  "title": "List 'best EV for' rankings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_category_ranking — Get a 'best EV for' ranking
Advertised by the server during the last successful anonymous check.
Advertised read-only

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_category_ranking input schema
{
  "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'."
    }
  }
}
get_category_ranking output schema
{
  "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."
    }
  }
}
get_category_ranking annotations
{
  "title": "Get a 'best EV for' ranking",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-09: 1 of 1 checks answered
  2. 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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http sulihuli-mcp https://sulihuli.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add sulihuli-mcp --url https://sulihuli.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable sulihuli-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "sulihuli-mcp": {
      "url": "https://sulihuli.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "sulihuli-mcp": {
      "type": "streamableHttp",
      "url": "https://sulihuli.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start sulihuli-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "sulihuli-mcp": {
      "type": "http",
      "url": "https://sulihuli.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http sulihuli-mcp https://sulihuli.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://sulihuli.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing